Visual Studio 2010发布Web功能不包括所有DLL

man*_*u08 53 deployment build-process visual-studio-2010 msdeploy asp.net-mvc-2

我有一个ASP.NET MVC 2应用程序.

  • Web项目包含对SomeProject的引用
  • SomeProject包含对ExternalAssembly1和ExternalAssembly2的引用.
  • SomeProject显式调用ExternalAssembly1,但不调用ExternalAssembly2.
  • ExternalAssembly1调用ExternalAssembly2

当我执行本地构建时,一切都很酷.所有DLL都包含在bin\debug文件夹中.问题是,当我在Visual Studio 2010中使用"发布Web"命令时,它会部署除ExternalAssembly2之外的所有内容.

它似乎忽略了不直接使用的程序集(请记住,ExternalAssembly2仅由ExternalAssembly1使用).

有什么办法可以告诉Visual Studio 2010包含ExternalAssembly2吗?

我可以写一个调用ExternalAssembly2的虚方法.这确实有效,但我真的不想让虚拟代码只是为了让VS2010发布DLL.

man*_*u08 20

在我看来,这些答案都不够.这似乎是一个真正的错误.如果我找到非破解解决方案,或者Microsoft修复了该错误,我将更新此响应.

更新:

似乎没有前途. https://connect.microsoft.com/VisualStudio/feedback/details/731303/publish-web-feature-not-including-all-dlls


Nic*_*oud 7

我有同样的问题(虽然不同的组件).如果我在我的web项目中引用程序集,那么它们将包含在发布输出中,但它们应该被包含在内,因为它们是间接依赖项:

Web项目--->组装A --->组装B

在构建时,程序集A和B将输出到\ bin文件夹.在发布时,只有程序集A被输出到发布文件夹.

我已经尝试更改发布设置以包含Web项目中的所有文件,但是我的发布输出中的文件不应该部署.

这对我来说似乎是个错误.


小智 6

我在VS2010和WCF服务应用程序中遇到了同样的问题.

事实证明,如果您(直接或间接)引用的DLL被部署到GAC,VS发布功能会将它们排除在外.从GAC中删除程序集后,发布功能开始按预期工作.

我想VS假设如果您的程序集可以位于您构建的计算机上的GAC中,它们也将位于目标计算机上的GAC中.至少在我的情况下,这种假设是错误的.