我有一个普通的SLN文件,我正在使用命令行中的msbuild编译它。我这样做:

C:\ slndir> msbuild / p:OutDir = C:\ slnbin \

它将所有内容转储到C:\ slnbin中,但网站除外,它们部署到C:\ slnbin_PublishedWebsites \。

我想要的是不仅要将所有二进制文件都放在bin目录中,而且让每个可执行程序都拥有它自己的“已部署”。文件夹,类似于每个网站获得的内容。

所以,例如,如果我有以下项目:   - 共同   - Lib1   - 服务1   - Lib2   - 服务2

我想得到:

  C:\slnbin\ // Everything
  C:\slbin\Deploy\Service1 // Common, Lib1, Service1
  C:\slbin\Deploy\Service2 // Common, Lib2, Service2

我尝试过像“msbuild / p:OutDir = C:\ slnbin \ $(ProjectName)”之类的东西,但它只是把它视为文字并创建一个实际的“$(ProjectName)”。子目录。

首先,我不需要修改每个项目等等。

这可能吗?易?

有帮助吗?

解决方案

就像John Saunders所说,你需要一个处理这个过程的主MSBuild文件。

以下是使用 MSBuild社区任务的示例:获取项目的 GetSolutionProjects 对于给定的解决方案

<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Package">

  <Import Project="$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets"/>

  <!-- Specify here, the solution you want to compile-->
  <ItemGroup>
    <Solution Include="C:\slndir\solution.sln"/>
  </ItemGroup>

  <PropertyGroup>
    <Platform>AnyCPU</Platform>
    <Configuration>Debug</Configuration>

    <!-- Your deployment directory -->
    <DeployDir>C:\slbin\Deploy</DeployDir>
  </PropertyGroup>

  <!-- Gets the projects composing the specified solution -->
  <Target Name="GetProjectsFromSolution">
    <GetSolutionProjects Solution="%(Solution.Fullpath)">
      <Output ItemName="ProjectFiles" TaskParameter="Output"/>
    </GetSolutionProjects>
  </Target>

  <Target Name="CompileProject" DependsOnTargets="GetProjectsFromSolution">
    <!-- 
      Foreach project files
        Call MSBuild Build Target specifying the outputDir with the project filename.
    -->
    <MSBuild Projects="%(ProjectFiles.Fullpath)"
             Properties="Platform=$(Platform);
             Configuration=$(Configuration);
             OutDir=$(DeployDir)\%(ProjectFiles.Filename)\"
             Targets="Build">
    </MSBuild>
  </Target>
</Project>

其他提示

您必须“手动”执行此操作。创建一个构建解决方案的主MSBUILD项目文件,然后将所有解决方案输出复制到所需的位置。这(大致)是Visual Studio Team Build如何做到的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top