나는 ClickOnce 빌드 자동화에 Nant를 사용합니다. 따라서 응용 프로그램을 빌드 한 후 폴더 생성을 위해 버전이 무엇인지 알아야합니다. 또한 자동 증가 빌드가 필요합니다. 건물에 대한NAnt 및 빌드 버전
나는이를 위해
나는 ClickOnce 빌드 자동화에 Nant를 사용합니다. 따라서 응용 프로그램을 빌드 한 후 폴더 생성을 위해 버전이 무엇인지 알아야합니다. 또한 자동 증가 빌드가 필요합니다. 건물에 대한NAnt 및 빌드 버전
나는이를 위해
msbuild.exe /t:publish
를 사용 전복 또는 자식 저장소를 사용할 때 자주 사용되는 당신이 당신의 소스 코드 저장소 개정 번호/해시를 사용할 수 있습니다.
cruisecontrol (ccnet)과 같은 buildserver를 사용하면이 빌드 버전이 증가합니다.
필자가 이해하는 한, 최소한의 노력으로 버전 감지/관리를하고 싶습니다.
왜 AssemblyInfo 자동 증가 기능을 사용하지 마십시오. [assembly: AssemblyVersion("1.0.*")]
을 AssemblyInfo.cs
에 넣으면 모든 빌드에서 빌드 번호가 증가합니다. this answer에서 자세한 정보를 찾아보십시오.
컴파일 한 후에는 NAnt function assemblyname::get-version
를 통해 어셈블리 버전을 검색 할 수 있습니다 :
assemblyname::get-version(assemblyname::get-assembly-name('MyAssembly.dll'))
업데이트 : 당신이 국회 정보 자동 증가 기능을 사용할 수없는 경우 , 당신은 NAnt 모든과의 AssemblyInfo.cs를 만들 수 있습니다 NAntContrib's <version>
-task을 사용하여 빌드하십시오.
<loadtasks assembly="C:\PathToNAntContibTasks\NAnt.Contrib.Tasks.dll" />
<target name="assemblyinfo" description="generates AssemblyInfo.cs">
<property
name="working.dir"
value="C:\src\foo" />
<property
name="build.number.path"
value="${path::combine(working.dir, 'build.number')}" />
<echo
file="${build.number.path}"
message="0.0.0.0"
unless="${file::exists(build.number.path)}" />
<version
buildtype="Increment"
path="${build.number.path}"/>
<foreach
item="File"
property="assemblyinfo.path">
<in>
<items>
<include name="${path::combine(working.dir, '**\AssemblyInfo.cs')}" />
</items>
</in>
<do>
<asminfo output="${assemblyinfo.path}" language="CSharp">
<imports>
<import namespace="System.Reflection" />
</imports>
<attributes>
<attribute type="AssemblyVersionAttribute" value="${buildnumber.version}" />
</attributes>
</asminfo>
</do>
</foreach>
</target>
msbuild/t를 사용하면 게시 할 때 버전을 증가시키지 않으므로 이 깃발. 내가 필요한 NAnt 함수를 가져 주셔서 감사합니다. –
나는 게시에 nant를 사용합니다. 그래서 내가 무언가를 소스 세이프 인으로 변경하고 게시하면 실수를보고 수정하고 다시 게시합니다. (소스가 안전하지 않으므로 소스 컨트롤의 버전 번호가 변경되지 않았으므로 응용 프로그램에서 변경 되었음) –