我使用Nant來自動化ClickOnce構建。所以在構建應用程序之後,我需要知道它的版本(用於創建文件夾的目的)。另外我需要建立自動增量。NAnt和構建版本
建築我用msbuild.exe /t:publish
我使用Nant來自動化ClickOnce構建。所以在構建應用程序之後,我需要知道它的版本(用於創建文件夾的目的)。另外我需要建立自動增量。NAnt和構建版本
建築我用msbuild.exe /t:publish
爲此,您可以使用您的源代碼庫版本號/哈希作爲使用顛覆或Git倉庫時經常被使用。
你也可以使用像cruisecontrol(ccnet)這樣的構建服務器,這將爲你構建版本增量。
就我所知,您希望以最小的努力進行版本檢測/管理。
爲什麼不使用AssemblyInfo自動增量功能。將[assembly: AssemblyVersion("1.0.*")]
放入您的AssemblyInfo.cs
將會增加每個版本的版本號。在this answer找到更多的信息。
編譯之後,您可以通過NAnt function assemblyname::get-version
檢測程序集版本:
assemblyname::get-version(assemblyname::get-assembly-name('MyAssembly.dll'))
更新: 如果您不能使用大會信息自動增量功能,您可以讓楠創建與每一個的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進行發佈。因此,如果我將某些內容更改爲源代碼安全版,請發佈它,然後我發現一個錯誤,修復它並重新發布。 (請注意,我一直在源代碼安全檢查它,所以在源代碼管理中的版本號沒有改變,但在應用程序中改變了) –