Visual Studio 2010 Publish Web feature not including all DLLs

I have an ASP.NET MVC 2 application.

  • Web project contains a reference to SomeProject
  • SomeProject contains references to ExternalAssembly1 and ExternalAssembly2.
  • SomeProject explicitly calls into ExternalAssembly1, but NOT ExternalAssembly2.
  • ExternalAssembly1 calls into ExternalAssembly2
  • When I perform a local build everything is cool. All DLLs are included in the bindebug folder. The problem is that when I use the Publish Web command in Visual Studio 2010, it deploys everything except ExternalAssembly2.

    It appears to ignore assemblies that aren't directly used (remember, ExternalAssembly2 is only used by ExternalAssembly1).

    Is there any way I can tell Visual Studio 2010 to include ExternalAssembly2?

    I can write a dummy method that calls into ExternalAssembly2. This does work, but I really don't want to have dummy code for the sole purpose of causing VS2010 to publish the DLL.


    None of these answers are sufficient in my mind. This does seem to be a genuine bug. I will update this response if I ever find a non-hack solution, or Microsoft fixes the bug.

    Update:

    Doesn't seem promising. https://connect.microsoft.com/VisualStudio/feedback/details/731303/publish-web-feature-not-including-all-dlls


    I am having this same problem (different assemblies though). If I reference the assemblies in my web project, then they will get included in the publish output, but they should be included anyway because they are indirect dependencies:

    Web Project ---> Assembly A ---> Assembly B

    On build, assemblies A and B are outputed to the bin folder. On publish, only assembly A is outputed to the publish folder.

    I have tried changing the publish settings to include all files in the web project, but then I have files in my publish output that shouldn't be deployed.

    This seems like a bug to me.


    I had the same problem with VS2010 and a WCF Service Application.

    It turns out that if your (directly or indirectly) referenced DLL's are deployed to GAC, the VS publishing feature excludes them. Once I removed the assemblies from GAC, publishing feature started working as expected.

    I guess VS is assuming that if your assemblies can be located in GAC on the machine you build, they will be located in GAC on the target machine as well. At least in my case this assumption is false.

    链接地址: http://www.djcxy.com/p/14318.html

    上一篇: WDP还是Publish进行自动部署?

    下一篇: Visual Studio 2010发布Web功能不包括所有DLL