2

多くのプロジェクトを持つソリューションをコンパイルする前に、いくつかの操作を実現するMSBuildスクリプトがあります。
プロセス中に作成されたファイル(SharedAssemblyInfo _ $(ambiente).cs)をすべてのプロジェクトのプロパティフォルダーに含める必要があります。

これを解決するための手がかりはありますか?

前もって感謝します!

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>
4

1 に答える 1

2

ルートMSBuild.projに<ItemGroup>-><Compile>アイテムがあるようです。これは良い最初のステップですが、ビルドスクリプトだけでなく、実際の.csprojにそれを貼り付ける必要があります。

これを行うには、リンクとして必要なファイルを追加する各.csprojにBeforeBuildタスクを追加します。

何かのようなもの:

<Target Name="BeforeBuild">
  <_FilesToInclude Include="..\SharedAssemblyInfo_$(ambiente).cs" />
    <Compile Include="@(_FilesToInclude->'%(Filename)%(Extension)')">
      <Link>%(RecursiveDir)%(Filename)%(Extension)</Link>
    </Compile>
  </ItemGroup>
</Target>
于 2013-01-16T18:52:26.873 に答える