2013-11-28 4 views
0

MSBuild에서 프로젝트의 AssemblyVersion 및 AssemblyFileVersion을 자동으로 업데이트하려고합니다.MSBuild 확장 팩 : AssemblyInfo - 예상대로 작동하지 않습니다.

특히 빌드 및 수정 번호. 내 소스 파일이

[assembly: AssemblyVersion("1.2.3.4")] 

로 밖으로 시작하고 내 빌드 및 개정 번호는 13, 14 경우

그래서, 나는이되고 싶어 :

[assembly: AssemblyVersion("1.2.13.14")] 

그러나, 나는 점점 아니에요 예상 된 결과. 대신, 나는 이런 것을 얻고있다. 아마도 내가 빌드를 한 시점의 11 월 28 일 때문일 것이다.

[assembly: AssemblyVersion("1.0.1128.01")] 

내 .csproj 파일의 관련 정보. 이 시점에서

<Import Project="$(MSBuildExtensionsPath64)\ExtensionPack\4.0\MSBuild.ExtensionPack.tasks"/> 
    <Import Project="$(MSBuildExtensionsPath64)\ExtensionPack\4.0\MSBuild.ExtensionPack.VersionNumber.targets"/> 
    <PropertyGroup> 
    <BuildDependsOn> 
     AssemblyVersion; 
     $(BuildDependsOn) 
    </BuildDependsOn> 
    </PropertyGroup> 
    <ItemGroup> 
    <AssemblyVersionFiles Include="$(MSBuildProjectDirectory)\Properties\AssemblyInfo.cs"/> 
    </ItemGroup> 
    <Target Name="AssemblyVersion" Inputs="@(AssemblyVersionFiles)" Outputs="UpdatedAssemblyVersionFiles"> 
    <Message Text="Setting AssemblyVersion..." Importance="High" /> 
    <AssemblyInfo 
     AssemblyInfoFiles="%(AssemblyVersionFiles.FullPath)" 
     AssemblyBuildNumber="12" 
     AssemblyBuildNumberType="NoIncrement" 
     AssemblyRevision="13" 
     AssemblyRevisionType="NoIncrement" 
     /> 
    </Target> 

나는, 모두 확장을 스크랩이 개 별도의 파일로 밖으로 내 조립 및 파일 버전을 분할하고, 읽고 그 값을 덮어 PowerShell을 사용하는 것이 단지에 대한 준비가. 빌드 머신에서만 수행 할 수 있기 때문에보다 바람직한 솔루션 일 수 있습니다. 따라서 확장팩이 설치되어 있지 않은 개발자가 이상한 결과를 얻는 것에 대해 걱정할 필요가 없습니다.

그래도 나는 두들겨 맞기 싫어서이 작업을 수행하는 방법을 알고 싶습니다.

의견이 있으십니까? 아래


전체 .csproj 파일 :이 질문에 대한

<?xml version="1.0" encoding="utf-8"?> 
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <PropertyGroup> 
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> 
    <Platform Condition=" '$(Platform)' == '' ">x86</Platform> 
    <ProductVersion>8.0.30703</ProductVersion> 
    <SchemaVersion>2.0</SchemaVersion> 
    <ProjectGuid>{452FDE9A-EAFE-44EF-A7AD-34F287AE1664}</ProjectGuid> 
    <OutputType>WinExe</OutputType> 
    <AppDesignerFolder>Properties</AppDesignerFolder> 
    <RootNamespace>AssemblyInfoTest</RootNamespace> 
    <AssemblyName>AssemblyInfoTest</AssemblyName> 
    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion> 
    <TargetFrameworkProfile>Client</TargetFrameworkProfile> 
    <FileAlignment>512</FileAlignment> 
    </PropertyGroup> 
    <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' "> 
    <PlatformTarget>x86</PlatformTarget> 
    <DebugSymbols>true</DebugSymbols> 
    <DebugType>full</DebugType> 
    <Optimize>false</Optimize> 
    <OutputPath>bin\Debug\</OutputPath> 
    <DefineConstants>DEBUG;TRACE</DefineConstants> 
    <ErrorReport>prompt</ErrorReport> 
    <WarningLevel>4</WarningLevel> 
    </PropertyGroup> 
    <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' "> 
    <PlatformTarget>x86</PlatformTarget> 
    <DebugType>pdbonly</DebugType> 
    <Optimize>true</Optimize> 
    <OutputPath>bin\Release\</OutputPath> 
    <DefineConstants>TRACE</DefineConstants> 
    <ErrorReport>prompt</ErrorReport> 
    <WarningLevel>4</WarningLevel> 
    </PropertyGroup> 
    <ItemGroup> 
    <Reference Include="System" /> 
    <Reference Include="System.Core" /> 
    <Reference Include="System.Xml.Linq" /> 
    <Reference Include="System.Data.DataSetExtensions" /> 
    <Reference Include="Microsoft.CSharp" /> 
    <Reference Include="System.Data" /> 
    <Reference Include="System.Deployment" /> 
    <Reference Include="System.Drawing" /> 
    <Reference Include="System.Windows.Forms" /> 
    <Reference Include="System.Xml" /> 
    </ItemGroup> 
    <ItemGroup> 
    <Compile Include="Form1.cs"> 
     <SubType>Form</SubType> 
    </Compile> 
    <Compile Include="Form1.Designer.cs"> 
     <DependentUpon>Form1.cs</DependentUpon> 
    </Compile> 
    <Compile Include="Program.cs" /> 
    <Compile Include="Properties\AssemblyInfo.cs" /> 
    <EmbeddedResource Include="Properties\Resources.resx"> 
     <Generator>ResXFileCodeGenerator</Generator> 
     <LastGenOutput>Resources.Designer.cs</LastGenOutput> 
     <SubType>Designer</SubType> 
    </EmbeddedResource> 
    <Compile Include="Properties\Resources.Designer.cs"> 
     <AutoGen>True</AutoGen> 
     <DependentUpon>Resources.resx</DependentUpon> 
    </Compile> 
    <None Include="Properties\Settings.settings"> 
     <Generator>SettingsSingleFileGenerator</Generator> 
     <LastGenOutput>Settings.Designer.cs</LastGenOutput> 
    </None> 
    <Compile Include="Properties\Settings.Designer.cs"> 
     <AutoGen>True</AutoGen> 
     <DependentUpon>Settings.settings</DependentUpon> 
     <DesignTimeSharedInput>True</DesignTimeSharedInput> 
    </Compile> 
    </ItemGroup> 
    <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> 

    <!--<Import Project="$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets"/>--> 
    <Import Project="$(MSBuildExtensionsPath64)\ExtensionPack\4.0\MSBuild.ExtensionPack.tasks"/> 
    <Import Project="$(MSBuildExtensionsPath64)\ExtensionPack\4.0\MSBuild.ExtensionPack.VersionNumber.targets"/> 
    <PropertyGroup> 
    <BuildDependsOn> 
     AssemblyVersion; 
     $(BuildDependsOn) 
    </BuildDependsOn> 
    </PropertyGroup> 
    <ItemGroup> 
    <AssemblyVersionFiles Include="$(MSBuildProjectDirectory)\Properties\AssemblyInfo.cs"/> 
    </ItemGroup> 
    <Target Name="AssemblyVersion" Inputs="@(AssemblyVersionFiles)" Outputs="UpdatedAssemblyVersionFiles"> 
    <Message Text="Setting AssemblyVersion..." Importance="High" /> 
    <AssemblyInfo 
     SkipVersioning="true" 
     AssemblyInfoFiles="%(AssemblyVersionFiles.FullPath)" 
     AssemblyBuildNumber="12" 
     AssemblyBuildNumberType="NoIncrement" 
     AssemblyRevision="13" 
     AssemblyRevisionType="NoIncrement" 
     /> 
    </Target> 
</Project> 
+0

프로젝트 파일에서 문제를 해결할 수 없습니다. 그러나 TFS를 사용하여 빌드하는 경우, 나는 Codeplex에서 TFSVersioning 빌드 템플릿을 사용하고 있으며 매력처럼 작동합니다. – malexander

+0

아니, TFS 아님. Teamcity 사용. .csproj를 첨부합니다.하지만 흥미로운 것은 아무것도 없으며 나머지는 기본값입니다. –

+0

참고 : * 팀 *을 사용할 예정입니다. 이 .csproj는 학습용으로 만든 빈 WinForms 프로젝트 용입니다. MsBuild를 로컬에서 실행하여 테스트합니다. –

답변

0

대답이었다 다음 어셈블리 정보는 CI의 일환으로 빌드하기 전에 파일을 직접 업데이트 할 수 PowerShell 스크립트를 사용하여 확장을 스크랩.

동정. 이 일을 처음부터 끝내기를 원했을 것입니다. 그러나 그 확장은 그들에게 일하기 위해 머리를 때려 눕힐만한 가치가 없었습니다.

+0

글쎄, 그것은 나를 위해 일했지만 AssemblyInfo 작업을 직접 호출했다. 나는 MSBuild.ExtensionPack.VersionNumber.targets를 사용하여 작동시키지 못했습니다. 그러나, 나는 MSBuild Community Tasks로 이동하는 것을 고려하고있다. –

관련 문제