使用LINQ to SQL类的代码在发布后不编译

时间:2017-01-11 12:44:44

标签: c# asp.net linq

我在Visual Studio 2010中创建了简单的Web项目,.Net 4有几个部分,用于插入和检索SQL Server数据库中的数据。我已经通过LINQ to SQL类和CommentaryData.dbml'来设置它。文件。如果我在浏览器中选择“查看”,这一切都可以正常工作。从visual studio,当我发布(文件发布到IIS wwwroot文件夹)时,文件发布没有错误。但是当我在浏览器中查看时,我看到以下编译错误: CS0246:类型或命名空间名称' CommentaryDataDataContext'找不到(你错过了使用指令或汇编引用吗?) 如果我展开详细的编译器输出,则会在包含我的datacontext的每一行上发生:CommentaryDataDataContext

我的项目引用中已经有system.data.linq,我的代码文件中引用的库看起来像这样:

using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

我还试图注释掉引用datacontext的所有代码,然后项目发布很好,所以我确定与LINQ有关的问题但是据我所知,我引用了正确的库,我可以尝试解决这个问题的任何想法吗?

修改:我尝试将程序集手动添加到web.config <add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>,但没有用。

我还检查了bin文件夹中存在System.Data.Linq.dll,它是

我还尝试在datacontext的每个实例之前显式引用命名空间,浏览器中的错误消息更改告诉我datacontext不存在于该命名空间中,但是当我查看designer.cs时dbml命名空间是正确的匹配

编辑2:正在创建的唯一dll(除了系统之外)是我的主命名空间/解决方案/项目:TableauCommentary.dll。如果我更新要部署的项目:&#39;到“只有运行此应用程序所需的文件”#39;再次它发布很好,但是当尝试在浏览器中查看时,我得到一个不同的错误:

分析程序错误消息:文件&#39; /tcom/CommentaryOutput.aspx.cs'不存在。

来源错误:

第1行:&lt;%@ Page Language =&#34; C#&#34; AutoEventWireup =&#34;真&#34;的CodeFile =&#34; CommentaryOutput.aspx.cs&#34;继承=&#34; TableauCommentary.CommentaryOutput&#34; %GT;

我的所有代码文件的构建操作都设置为编译,但似乎dll文件可能没有正确创建,并且我之前遇到LINQ错误而不是之前的唯一原因是因为代码隐藏.cs文件被包含在已发布的位置,它不应该被包含在内。包括dbml设计器在内的所有代码文件都是在项目中创建的,并且使用相同的命名空间,所以也许只应该有一个dll,但是它没有正常工作,或者可能应该有一个单独的一个用于LINQ元素如下所示,不确定......有人能提供进一步的帮助吗?

2 个答案:

答案 0 :(得分:0)

可能有几个原因:

  1. 您最有可能在x32模式下构建应用程序,并且应用程序池配置为x64,反之亦然。确保您的应用池和网站都是x64或x32。

  2. 您引用了一个库,并且它没有标记为复制到输出,如下所示:

  3. enter image description here

答案 1 :(得分:0)

我终于对此进行了整理。我认为解决方案值得发布;因为它需要大量的阅读才能找到明确说明这是必要步骤的任何地方:

如果您通过文件系统发布:发布后,您必须转到IIS管理器,右键单击您的应用程序并单击“转换为应用程序”

这不是Web部署发布的必要步骤,因为它是为您完成的,并且根本没有必要使用网站而不是Web应用程序,所以我之前根本没有遇到过这样做的需要。

编辑:我应该声明对于Visual Studio 2010,.NET 4.0,IIS 8都是如此。我不能代表其他版本,而且似乎这对于&lt; IIS7