Deployment Visual Studio 2010发布Web功能不包括所有DLL
我有一个ASP.NETMVC2应用程序Deployment Visual Studio 2010发布Web功能不包括所有DLL,deployment,visual-studio-2010,asp.net-mvc-2,build-process,msdeploy,Deployment,Visual Studio 2010,Asp.net Mvc 2,Build Process,Msdeploy,我有一个ASP.NETMVC2应用程序 Web项目包含对SomeProject的引用 SomeProject包含对ExternalAssembly1和ExternalAssembly2的引用 SomeProject显式调用ExternalAssembly1,但不调用ExternalAssembly2 ExternalAssembly1调用ExternalAssembly2 当我执行本地构建时,一切都很酷。所有DLL都包含在bin\debug文件夹中。问题是,当我在VisualStudio20
- Web项目包含对SomeProject的引用
- SomeProject包含对ExternalAssembly1和ExternalAssembly2的引用李>
- SomeProject显式调用ExternalAssembly1,但不调用ExternalAssembly2
- ExternalAssembly1调用ExternalAssembly2
我可以编写一个调用ExternalAssembly2的伪方法。这确实有效,但我真的不想让伪代码仅仅用于导致VS2010发布DLL。如果您进入ExternalAssembly2引用属性列表并将“Copy Local”更改为“True”,我认为这可能会解决您的问题 我遇到了同样的问题(尽管不同的组件)。如果我引用web项目中的程序集,则它们将包含在发布输出中,但无论如何都应包含它们,因为它们是间接依赖项: Web项目-->Assembly A-->Assembly B 生成时,程序集A和B将输出到\bin文件夹。发布时,仅将程序集A输出到发布文件夹 我已尝试更改发布设置,以包括web项目中的所有文件,但发布输出中有不应部署的文件
这对我来说似乎是一个bug。我的测试表明,当我在web项目中有外部程序集的引用时,这些外部程序集就会被发布。我不必编写任何伪代码来让它工作。这对我来说似乎是可以接受的
我同意Nicholas的观点,这似乎是VisualStudio中的一个bug。至少我不知道这种行为的原因是什么。这些答案在我心目中都是不够的。这似乎是一个真正的错误。如果我找到了非黑客解决方案,或者微软修复了这个bug,我会更新这个响应 更新: 看起来不太有希望。
我不知道你是否还在看这部电影,但我通过找到了解决方案(我遇到了完全相同的问题)。在文件的“构建操作”下,选择“内容”,该内容应包括在发布带来的文件列表中。我也遇到了同样的问题,如果有如下参考链接,这就是VS2010错误: Web项目-->自定义项目-->程序集1-->(间接)程序集2 现在,我发现如果我在web项目中引用Assembly1,那么assembly2将包含在bin文件夹中。 因此,我不得不添加一个额外的参考链接,如: Web项目-->程序集1-->(间接)程序集2。
然后VS可以识别assembly2并在发布操作中包含其dll文件。我已将此问题创建为Microsoft Connect上的错误。如果有人对此进行投票,那么希望我们能有所行动。我在一个web项目中也遇到了同样的问题。我有一个引用程序集a的web项目,它引用程序集B。它工作了一段时间很好,但今天它被破坏了。我重新构建了解决方案,这次它正确地部署了所有内容。我今天遇到了同样的问题。我发布了我的web项目,并意识到并不是所有的参考DLL都在那里。特别是间接DLL引用 事实证明,我发布到的目录的磁盘空间(网络共享)不足。我只有足够的空间来发布所有的文件,除了一些间接引用DLL。可悲的是VS08没有抛出任何错误。它刚刚发布的文件是普通的。我清理了一些硬盘空间,一切正常
在我尝试手动移动DLL之前,我没有发现硬盘空间问题。我在这里创建了一个新的连接错误 我还附上了一个解决方案和详细的步骤来重现这个问题。希望这次他们不会关闭它,因为它无法复制
如果遇到缺少dll的问题,请投票支持此连接问题。我对VS2010和WCF服务应用程序也有同样的问题 事实证明,如果您(直接或间接)引用的DLL部署到GAC,VS发布功能将排除它们。一旦我从GAC中删除了程序集,发布功能就开始按预期工作
我猜VS假设如果您的程序集可以位于您构建的机器上的GAC中,那么它们也将位于目标机器上的GAC中。至少在我的情况下,这个假设是错误的 就我而言,这是相当棘手的。 对ExternalAssembly2的引用不是构建项目所必需的,但对于运行时非常重要,因为我们使用反射来配置Unity容器。 因此,我删除了引用-成功地构建了项目,但得到了运行时错误。 如果我保留引用,我可以生成并运行应用程序,但我不能使用ExternalAssembly2-get运行时异常发布它。 这是由于内部VS2010组件优化导致的 那么,我们在这里能做什么? 1.放置一些不需要的代码以使用任何ExternalAssembly2的类。 2.退出反射并使用静态程序集链接
希望这对smbd有所帮助。Copy local成功了。我遇到了一个问题,Newtonsoft.Json程序集包含在deploymeny包中。复制本地已设置为false。感谢您的响应,但这已经设置好了(这就是本地构建工作的原因)。这并不能解决出版问题,我同意。现在,我想我将使用虚拟方法,它只调用我需要发布的每个DLL。不过这仍然是一个黑客攻击。我不应该参考