多个构建项目的 csproj 文件设置
csproj file settings for several build projects
我有这个解决方案结构:
Solution.sln
|--WebUI.csproj (has Core.csproj as dependency)
|--Core.csproj
|--Tests
|--UnitTests
|--WebUI.UnitTest.csproj (has Core.csproj and WebUI.csproj as dependencies)
|--Core.UnitTest.csproj (has Core.csproj as dependency)
我应该向 WebUI.csproj 添加什么来构建 WebUI.UnitTest.csproj 和 Core.UnitTest.csproj? (在我的 WebUI\bin 文件夹中,我需要这些库:WebUI.UnitTest.dll 和 Core.UnitTest.dll)。
谢谢!
直接的方法是添加WebUI.UnitTest工程和Core.UnitTest工程作为WebUI工程的依赖。但是 WebUI.UnitTest 项目已经有 WebUI.csproj 作为依赖项,此方法在您的解决方案结构中不起作用。如果您只想在 WebUI\bin 文件夹中包含 WebUI.UnitTest.dll 和 Core.UnitTest.dll,您可以在 WebUI.csproj 中添加任务以将这些文件复制到文件夹中:
<Target Name="AfterBuild">
<PropertyGroup>
<SolutionDir>$([System.IO.Path]::GetDirectoryName($(MSBuildProjectDirectory)))</SolutionDir>
</PropertyGroup>
<Exec Command=""$(MSBuildBinPath)\MSBuild.exe" "$(SolutionDir)\WebUI.UnitTest\WebUI.UnitTest.csproj"" />
<Exec Command=""$(MSBuildBinPath)\MSBuild.exe" "$(SolutionDir)\Core.UnitTest\Core.UnitTest.csproj"" />
<PropertyGroup>
<CopyFileOutput>$(SolutionDir)\WebUI.UnitTest\bin\Debug\WebUI.UnitTest.dll;$(SolutionDir)\Core.UnitTest\bin\Debug\Core.UnitTest.dll</CopyFileOutput>
</PropertyGroup>
<Copy
SourceFiles="$(CopyFileOutput)"
DestinationFolder="$(SolutionDir)\WebUI\bin"
/>
请注意:stijn 的评论是正确的,您构建解决方案,WebUI.UnitTest.csproj 和Core.UnitTest。 csproj 应该已经构建好了。
我还在 WebUI.csproj 中添加了 WebUI.UnitTest.csproj 和 Core.UnitTest.csproj 的构建步骤,这样你只需要构建 WebUI.csproj.
我有这个解决方案结构:
Solution.sln
|--WebUI.csproj (has Core.csproj as dependency)
|--Core.csproj
|--Tests
|--UnitTests
|--WebUI.UnitTest.csproj (has Core.csproj and WebUI.csproj as dependencies)
|--Core.UnitTest.csproj (has Core.csproj as dependency)
我应该向 WebUI.csproj 添加什么来构建 WebUI.UnitTest.csproj 和 Core.UnitTest.csproj? (在我的 WebUI\bin 文件夹中,我需要这些库:WebUI.UnitTest.dll 和 Core.UnitTest.dll)。
谢谢!
直接的方法是添加WebUI.UnitTest工程和Core.UnitTest工程作为WebUI工程的依赖。但是 WebUI.UnitTest 项目已经有 WebUI.csproj 作为依赖项,此方法在您的解决方案结构中不起作用。如果您只想在 WebUI\bin 文件夹中包含 WebUI.UnitTest.dll 和 Core.UnitTest.dll,您可以在 WebUI.csproj 中添加任务以将这些文件复制到文件夹中:
<Target Name="AfterBuild">
<PropertyGroup>
<SolutionDir>$([System.IO.Path]::GetDirectoryName($(MSBuildProjectDirectory)))</SolutionDir>
</PropertyGroup>
<Exec Command=""$(MSBuildBinPath)\MSBuild.exe" "$(SolutionDir)\WebUI.UnitTest\WebUI.UnitTest.csproj"" />
<Exec Command=""$(MSBuildBinPath)\MSBuild.exe" "$(SolutionDir)\Core.UnitTest\Core.UnitTest.csproj"" />
<PropertyGroup>
<CopyFileOutput>$(SolutionDir)\WebUI.UnitTest\bin\Debug\WebUI.UnitTest.dll;$(SolutionDir)\Core.UnitTest\bin\Debug\Core.UnitTest.dll</CopyFileOutput>
</PropertyGroup>
<Copy
SourceFiles="$(CopyFileOutput)"
DestinationFolder="$(SolutionDir)\WebUI\bin"
/>
请注意:stijn 的评论是正确的,您构建解决方案,WebUI.UnitTest.csproj 和Core.UnitTest。 csproj 应该已经构建好了。
我还在 WebUI.csproj 中添加了 WebUI.UnitTest.csproj 和 Core.UnitTest.csproj 的构建步骤,这样你只需要构建 WebUI.csproj.