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>
프로젝트 파일에서 문제를 해결할 수 없습니다. 그러나 TFS를 사용하여 빌드하는 경우, 나는 Codeplex에서 TFSVersioning 빌드 템플릿을 사용하고 있으며 매력처럼 작동합니다. – malexander
아니, TFS 아님. Teamcity 사용. .csproj를 첨부합니다.하지만 흥미로운 것은 아무것도 없으며 나머지는 기본값입니다. –
참고 : * 팀 *을 사용할 예정입니다. 이 .csproj는 학습용으로 만든 빈 WinForms 프로젝트 용입니다. MsBuild를 로컬에서 실행하여 테스트합니다. –