Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 发布后未编译使用LINQ to SQL类的代码_C#_Asp.net_Linq - Fatal编程技术网

C# 发布后未编译使用LINQ to SQL类的代码

C# 发布后未编译使用LINQ to SQL类的代码,c#,asp.net,linq,C#,Asp.net,Linq,我在VisualStudio2010、.NET4中创建了一个简单的web项目,它有两个部分,用于插入和检索SQL Server数据库中的数据。我已经通过LINQtoSQL类的CommentaryData.dbml文件设置了这个。如果我从visual studio中选择“在浏览器中查看”,当我发布(文件发布到IIS wwwroot文件夹)时,这些文件发布时不会出现错误,那么所有这些都可以正常工作。但当我在浏览器中查看时,我看到以下编译错误: CS0246:找不到类型或命名空间名称“Commenta

我在VisualStudio2010、.NET4中创建了一个简单的web项目,它有两个部分,用于插入和检索SQL Server数据库中的数据。我已经通过LINQtoSQL类的CommentaryData.dbml文件设置了这个。如果我从visual studio中选择“在浏览器中查看”,当我发布(文件发布到IIS wwwroot文件夹)时,这些文件发布时不会出现错误,那么所有这些都可以正常工作。但当我在浏览器中查看时,我看到以下编译错误: CS0246:找不到类型或命名空间名称“CommentaryDataContext”(是否缺少using指令或程序集引用?) 如果我展开详细的编译器输出,这将发生在包含我的datacontext的每一行:
CommentaryDataContext

我的项目引用中已经有
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,但没有成功

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

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

编辑2:正在创建的唯一dll(除了system.ones)是我的主命名空间/解决方案/项目的dll:tableaucommential.dll。如果我再次将“要部署的项目:”更新为“仅运行此应用程序所需的文件”,则它可以正常发布,但当尝试在浏览器中查看时,我会收到不同的错误:

分析器错误消息:文件“/tcom/CommentaryOutput.aspx.cs”不存在

源错误:

第1行:


我所有代码文件上的Build action都设置为compile,但dll文件似乎没有正确创建,我遇到LINQ错误的唯一原因是因为codebehind.cs文件包含在发布位置,而不需要这样做。包括dbml设计器在内的所有代码文件都是在项目中创建的,并且使用相同的名称空间,因此可能只有一个dll,但它不能正常工作,或者应该为LINQ元素提供一个单独的dll,如下所示,不确定…有人可以提供进一步的帮助吗

可能有几个原因:

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

  • 您引用了一个库,但未将其标记为“复制到输出”,如下所示:


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

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

    这不是web部署发布的必要步骤,因为它是为您完成的,对于网站而不是web应用程序来说,这根本不是必需的,所以我以前根本没有遇到过这样做的需要


    编辑:我应该声明这对于VisualStudio2010、.NET4.0、IIS8是正确的。我不能为其他版本说话,这似乎对的工作方式有所不同,为什么要在服务器上编译?用户将没有对服务器文件系统的读/写权限,因此请确保将文件保存在客户端PC上。也许我没有领会您的观点,但我希望用户插入/检索的数据位于SQL server数据库上,该数据库可通过存储在web.config文件中的详细信息进行访问,在visual studio中测试时,同样可以正常工作;记录是按预期插入和检索的,只有当我发布时,过度发布才可能意味着一些不同的事情。你想发布报告吗?报告是否加载到数据库中?发布网站,实际上这是一个web项目,我将在问题中更正。我的意思是,当我从visual studio在浏览器中查看页面时,它工作正常,当我发布到服务器上的wwwroot文件夹并尝试在web浏览器中查看时,我得到了编译错误。编译器错误可能意味着源代码找不到EF模型。edmx型号在哪里?它是在你的项目中还是在它的项目中。无论哪种方式,它都将生成一个相应的dll(CommentaryData?),该dll必须在主项目中引用。您应该确保在发布时,您的安装包在bin目录中包含dll对不起,这两个都不是。System.Data.Linq已在副本local=true上。虽然将其设置为false也会阻止它在Visual Studio中工作,因此可能在发布时无法正常工作,但这不是32/64位问题