2008-12-03 8 views
0

TousMise à jour des informations de montage avec MSBuild ne

je suis en train de mettre à jour automatiquement les informations de montage d'un projet en utilisant la tâche AssemblyInfo, avant de construire cependant la cible semble ne rien faire (pas de défaillance/erreur) tout simplement pas mise à jour/création

est en dessous du fichier build.proj J'utilise (évidemment des contenus modifiés)

quelqu'un peut-il aider?

<?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> 
+0

Recevez-vous les messages déversés au moins? –

Répondre

0

Je pense qu'il vous manque la spécification de l'attribut AssemblyInfoFiles sur votre tâche AssemblyInfo. Voilà à quoi il ressemble sur un projet, je travaille sur ...

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

Ce que nous faisons est d'abord utiliser pour créer une propriété qui contient le nom du fichier que nous mettrons à jour. Nous devons le faire via createItem parce que quand on commence la construction du fichier n'existe pas (et qui est quand MSBuild évalue les et définitions dans votre fichier de construction.

Nous prenons alors le bit readonly hors du fichier.

Enfin, nous appelons la tâche AssemblyInfo en lui transmettant le (s) fichier (s) à mettre à jour et un nom d'assembly personnalisé (dans ce cas, nous mettons le label de construction TFS dans le champ Description de l'assembly équipe de construire l'assemblage est venu