【问题标题】:Updating Assembly information with MSBuild failing使用 MSBuild 更新程序集信息失败
【发布时间】:2008-12-03 14:49:26
【问题描述】:

全部

我正在尝试使用 AssemblyInfo 任务自动更新项目的程序集信息,但在构建之前目标似乎什么都不做(没有失败/错误)只是没有更新/创建

下面是我正在使用的 build.proj 文件(显然有些内容已更改)

谁能帮忙?

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build"  
         xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

  <Import Project="$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets"/>
  <Import Project="$(MSBuildExtensionsPath)\Microsoft\AssemblyInfoTask\Microsoft.VersionNumber.targets"/>
  <PropertyGroup>
    <Major>1</Major>
    <Minor>0</Minor>
    <Build>0</Build>
    <Revision>0</Revision>
  </PropertyGroup>
  <PropertyGroup>
    <BuildDir>C:\svn\Infrastructure</BuildDir>
  </PropertyGroup>

  <ItemGroup>
    <SolutionsToBuild Include="Infrastructure.sln"/>
  </ItemGroup>

  <Target Name="Build" DependsOnTargets="ChangeDataAccessAssemblyInfo">
    <RemoveDir Directories="$(BuildDir)\Builds" Condition="Exists('$(BuildDir)\Builds')" />
    <MSBuild Projects="@(SolutionsToBuild)" Properties="Configuration=Debug" Targets="Rebuild" />
  </Target>

  <ItemGroup>
    <TestAssemblies Include="Build\Logging\Logging.UnitTests.dll" />
  </ItemGroup>

  <!--<UsingTask TaskName="NUnit" AssemblyFile="$(teamcity_dotnet_nunitlauncher_msbuild_task)" />
  <Target Name="Test" DependsOnTargets="Build">
    <NUnit NUnitVersion="NUnit-2.4.6" Assemblies="@(TestAssemblies)" />
  </Target>-->

  <Target Name="ChangeDataAccessAssemblyInfo" >
    <Message Text="Writing ChangeDataAccessAssemblyInfo file for 1"/>
    <Message Text="Will update $(BuildDir)\DataAccess\My Project\AssemblyInfo.vb" />
    <AssemblyInfo CodeLanguage="VB"
       OutputFile="$(BuildDir)\DataAccess\My Project\AssemblyInfo_new.vb"                
       AssemblyTitle="Data Access Layer"
       AssemblyDescription="Message1"
       AssemblyCompany="http://somewebiste"
       AssemblyProduct="the project"
       AssemblyCopyright="Copyright notice"
       ComVisible="true"
       CLSCompliant="true"
       Guid="hjhjhkoi-9898989"
       AssemblyVersion="$(Major).$(Minor).1.1"
       AssemblyFileVersion="$(Major).$(Minor).5.7"
       Condition="$(Revision) != '0' "
       ContinueOnError="false" />

    <Message Text="Updated Assembly File Info" 
             ContinueOnError="false"/>
  </Target>  
</Project>

【问题讨论】:

  • 你收到的邮件至少被转储了吗?

标签: vb.net msbuild


【解决方案1】:

我认为您在 AssemblyInfo 任务中缺少 AssemblyInfoFiles 属性的规范。这是我正在从事的项目的外观...

<Target Name="AfterGet">
    <Message Text="In After Get"/>

    <CreateItem Include="$(SolutionRoot)\Source\SomeProject\My Project\AssemblyInfo.vb">
        <Output ItemName="AssemblyInfoFiles" TaskParameter="Include"/>
    </CreateItem>

    <Attrib Files="@(AssemblyInfoFiles)"
            ReadOnly="false"/>

    <AssemblyInfo AssemblyInfoFiles="@(AssemblyInfoFiles)"
        AssemblyDescription="$(LabelName)">
    </AssemblyInfo>
</Target>

我们首先要创建一个包含我们将要更新的文件名的属性。我们必须通过 createItem 执行此操作,因为当我们开始构建时,该文件不存在(这就是 MSBuild 评估构建文件中的 和 定义的时候。

然后我们从文件中删除只读位。

最后,我们调用 AssemblyInfo 任务,将要更新的文件和我们想要给它的自定义程序集名称传递给它(在这种情况下,我们将 TFS 构建标签放入程序集描述字段中,以便我们可以轻松分辨构建程序集的团队来自哪个团队。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-04
    • 2010-09-18
    • 2017-01-20
    • 1970-01-01
    • 2019-10-24
    • 1970-01-01
    • 1970-01-01
    • 2017-05-14
    相关资源
    最近更新 更多