我的网络应用程序基本上有三个独立的项目:
要做依赖注入,我的MyWeb项目只是添加对MyBusiness
interfaces项目的引用,而不是实现(或者我的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文件夹。
答案 0 :(得分:1)
在部署之前,您似乎错过了将复制的项目添加到WebDeploy清单和包中的步骤。
查看此帖子,了解如何在软件包中包含额外文件的绝佳答案 How do you include additional files using VS2010 web deployment packages?