我在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元素如下所示,不确定......有人能提供进一步的帮助吗?
答案 0 :(得分:0)
答案 1 :(得分:0)
我终于对此进行了整理。我认为解决方案值得发布;因为它需要大量的阅读才能找到明确说明这是必要步骤的任何地方:
如果您通过文件系统发布:发布后,您必须转到IIS管理器,右键单击您的应用程序并单击“转换为应用程序”
这不是Web部署发布的必要步骤,因为它是为您完成的,并且根本没有必要使用网站而不是Web应用程序,所以我之前根本没有遇到过这样做的需要。
编辑:我应该声明对于Visual Studio 2010,.NET 4.0,IIS 8都是如此。我不能代表其他版本,而且似乎这对于&lt; IIS7