使用msbuild将文件包括在.csproj中



我有一个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)MSBuildCommunityTasksMSBuild.Community.Tasks.Targets" />
  <Import Project="$(MSBuildBinPath)Microsoft.CSharp.targets" />
  <Import Project="$(MSBuildExtensionsPath32)MicrosoftVisualStudiov10.0WebApplicationsMicrosoft.WebApplication.targets"/>
  <ItemGroup>
    <Solution Include="Stoque.ECM.sln" />
    <Compile Include="..SharedAssemblyInfo_$(ambiente).cs">
        <Link>PropertiesSharedAssemblyInfo_$(ambiente).cs</Link>
    </Compile>
  </ItemGroup>
  <PropertyGroup>
    <TMaior>2</TMaior>
    <TMedio>0</TMedio>
    <TMenor>0</TMenor>
    <DeployDir>E:compartilhadaabaris</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>

我看到您有AN&lt; itemgroup&gt; - &gt;&lt; compile&gt;root msbuild .proj中的项目。这是一个很好的第一步,但是您需要将其粘在实际的.csproj中,而不仅仅是您的构建脚本。

为此

类似:

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

最新更新