Mic*_*lGG 11 msbuild projects-and-solutions visual-studio
我有一个普通的SLN文件,我正在使用msbuild从命令行编译它.我这样做:
C:\ slndir> msbuild/p:OutDir = C:\ slnbin \
并且它将所有内容转储到C:\ slnbin中,除了网站,它们被部署到C:\ slnbin_PublishedWebsites \.
我想要的是不仅将所有二进制文件都放在bin目录中,而且每个可执行程序都有自己的"部署"文件夹,类似于每个网站获得的.
所以,例如,如果我有以下项目: - Common - Lib1 - Service1 - Lib2 - Service2
我想得到:
C:\slnbin\ // Everything
C:\slbin\Deploy\Service1 // Common, Lib1, Service1
C:\slbin\Deploy\Service2 // Common, Lib2, Service2
Run Code Online (Sandbox Code Playgroud)
我尝试过像"msbuild/p:OutDir = C:\ slnbin\$(ProjectName)"这样的东西,但它只是将它视为文字并创建一个实际的"$(ProjectName)"子目录.
我不需要修改每个项目等等.
这可能吗?简单?
Jul*_*rau 13
就像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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6556 次 |
| 最近记录: |