2012-10-23 59 views
2

我有一个MSBuild脚本,它在编译具有许多项目的解决方案之前实现了一些操作。
我需要在每个项目的“属性”文件夹中包含在此过程中创建的文件(SharedAssemblyInfo _ $(ambiente).cs)。

任何解决此问题的线索?

在此先感谢!使用MSBuild在.csproj中包含文件

PS:这里是我的脚本:

<?xml version="1.0" encoding="utf-8"?> 
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0"> 
    <Import Project="$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets" /> 
    <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> 
    <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets"/> 

    <ItemGroup> 
    <Solution Include="Stoque.ECM.sln" /> 

    <Compile Include="..\SharedAssemblyInfo_$(ambiente).cs"> 
     <Link>Properties\SharedAssemblyInfo_$(ambiente).cs</Link> 
    </Compile> 

    </ItemGroup> 
    <PropertyGroup> 
    <TMaior>2</TMaior> 
    <TMedio>0</TMedio> 
    <TMenor>0</TMenor> 

    <DeployDir>E:\compartilhada\abaris</DeployDir> 
    </PropertyGroup> 

    <Target Name="GetProjects"> 
    <GetSolutionProjects Solution="%(Solution.Fullpath)"> 
     <Output ItemName="ProjectFiles" TaskParameter="Output" /> 
    </GetSolutionProjects> 
    </Target> 

    <Target Name="AssemblyVersion"> 
    <Time Format="yyMMdd"> 
     <Output TaskParameter="FormattedTime" PropertyName="TRevisao" /> 
    </Time> 
    <AssemblyInfo CodeLanguage="CS" OutputFile="..\SharedAssemblyInfo_$(ambiente).cs" AssemblyVersion="$(TMaior).$(TMenor).*" AssemblyFileVersion="$(versao)" AssemblyInformationalVersion="$(versao)" /> 
    <!-- <Copy SourceFiles="..\SharedAssemblyInfo_$(ambiente).cs" DestinationFolder="%(ProjectFiles.Filename)\Properties" ContinueOnError="false" /> --> 
    </Target> 

    <Target Name="Compile" DependsOnTargets="GetProjects"> 
    <MSBuild Projects="%(ProjectFiles.Fullpath)" 
    Properties="WebProjectOutputDir=$(DeployDir)\$(ambiente)\$(versao)\SITES_PUBLICADOS\%(ProjectFiles.Filename);Platform=$(Platform);Configuration=$(Configuration);OutputPath=$(DeployDir)\$(ambiente)\$(versao)\%(ProjectFiles.Filename)"> 
    </MSBuild> 
    </Target> 

</Project> 

回答

2

我看到你有一个<的ItemGroup > - 在你的根的MSBuild .proj > <编译>项目。这是一个很好的第一步,但你需要坚持在实际的.csproj中,而不仅仅是你的构建脚本。

要做到这一点,请在每个.csproj中添加一个BeforeBuild任务,以添加您想要的文件作为链接。

喜欢的东西:

<Target Name="BeforeBuild"> 
    <_FilesToInclude Include="..\SharedAssemblyInfo_$(ambiente).cs" /> 
    <Compile Include="@(_FilesToInclude->'%(Filename)%(Extension)')"> 
     <Link>%(RecursiveDir)%(Filename)%(Extension)</Link> 
    </Compile> 
    </ItemGroup> 
</Target> 
相关问题