繁体   English   中英

发布Web项目 - MSBuild不复制依赖项目的DLL,这些DLL未添加对Web项目的引用

[英]Publish web project - MSBuild does not copy dependent projects' DLL which are not added reference to web project

我的Web应用程序基本上有三个独立的项目:

  1. 我想要发布到生产环境的Web项目“MyWeb”
  2. 一个库项目“MyBusiness”,它定义了业务层的接口。 该项目由MyWeb项目引用
  3. 另一个库项目“MyBusinessImplementation”,它包含Business层的实现(具体类实现了Business层的接口)。

要做依赖注入,我的MyWeb项目只是添加对MyBusiness接口项目的引用,而不是实现(或者我的web项目与实现密切相关,而且我也无法阻止我的开发人员创建一个“新”对象我的web项目中的具体类)。

在不直接向Business实现项目添加引用的情况下,构建项目时,Visual Studio不知道将实现项目的DLL复制到web的bin文件夹中,因此我将其添加到MyWeb项目文件中:

<PropertyGroup>
    <BuildDependsOn>BuildDependentProjects;$(BuildDependsOn);</BuildDependsOn>
</PropertyGroup>
<ItemGroup>
    <ProjectToBuild Include="$(SolutionDir)\MyBusinessImplementation\MyBusinessImplementation.csproj">
    <Properties>Configuration=$(Configuration)</Properties>      
    </ProjectToBuild>    
</ItemGroup>
<Target Name="AfterBuild">
    <Copy SourceFiles="$(SolutionDir)\MyBusinessImplementation\bin\$(Configuration)\MyBusinessImplementation.dll" DestinationFolder="$(SolutionDir)\MyWebSite\bin"></Copy>    
</Target>
<Target Name="BuildDependentProjects">    
    <MSBuild Projects="@(ProjectToBuild)" />    
</Target>

当我从Visual Studio 2012发布MyWeb项目或运行时,问题是

“MSBuild”MyWeb.jsproj“\\ T:Package \\ P:Configuration = Debug”

我看到MyBusinessImplementation.dll被复制到我工作代码目录的MyWeb的bin文件夹中,但不会复制到已发布的包目录中。

我还尝试将Copy任务的DestinationFolder更改为绝对路径,如“C:\\ abc”,然后我看到.dll文件已成功复制到abc文件夹,但仍未复制到我的Package的web的bin文件夹中。

看起来您错过了在部署之前将复制的项目添加到WebDeploy清单和包中的步骤。

查看这篇文章,了解如何在软件包中包含额外文件的绝佳答案。
如何使用VS2010 Web部署包包含其他文件?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM