2012-10-23 83 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> 
相關問題