2011-07-28 94 views
0

我使用Nant來自動化ClickOnce構建。所以在構建應用程序之後,我需要知道它的版本(用於創建文件夾的目的)。另外我需要建立自動增量。NAnt和構建版本

建築我用msbuild.exe /t:publish

回答

0

爲此,您可以使用您的源代碼庫版本號/哈希作爲使用顛覆或Git倉庫時經常被使用。

你也可以使用像cruisecontrol(ccnet)這樣的構建服務器,這將爲你構建版本增量。

+0

我使用nant進行發佈。因此,如果我將某些內容更改爲源代碼安全版,請發佈它,然後我發現一個錯誤,修復它並重新發布。 (請注意,我一直在源代碼安全檢查它,所以在源代碼管理中的版本號沒有改變,但在應用程序中改變了) –

0

就我所知,您希望以最小的努力進行版本檢測/管理。

爲什麼不使用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> 
+0

因爲當你使用msbuild/t:發佈時,它不會增加版本,即使你用這個標誌。感謝您的NAnt功能,這是我需要的。 –