2008-12-03 3 views
0

ВсехОбновления с MSBuild неудачи

я пытаюсь автоматически обновлять информацию сборки проекта с использованием задачи 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> 
+0

Вы получаете сообщения, сбрасываемые как минимум? – 2008-12-04 01:19:50

ответ

0

Я думаю, что вам не указана спецификация AssemblyInfoFiles в вашей задаче AssemblyInfo. Вот как это выглядит на проекте я работаю ...

<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 в поле Описание сборки, чтобы мы могли легко определить, какие сборка сборки собралась.

Смежные вопросы