我有一个普通的 SLN 文件,我可以从命令行使用 msbuild 很好地编译它。我这样做:
C:\slndir> msbuild /p:OutDir=C:\slnbin\
它将所有内容转储到 C:\slnbin,但网站除外,网站部署到 C:\slnbin_PublishedWebsites\。
我想要的是不仅将所有二进制文件放入 bin 目录中,而且还让每个可执行程序都有自己的“部署”文件夹,类似于每个网站所获得的文件夹。
例如,如果我有以下项目:
- 常见的
- 库1
- 服务1
- 库2
- 服务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 社区任务 http://msbuildtasks.tigris.org/ : 获取解决方案项目获取给定解决方案的项目
<?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>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)