2012-12-05 46 views
0

編譯以下後出現在應用清單,如果我在VS發佈由手工採摘的版本是第一位的,即3.9.0.3擷取asmv1:assemblyIdentity從清單

<asmv1:assemblyIdentity name="MyApp.exe" version="3.9.0.3" publicKeyToken="0000000000000000" language="neutral" processorArchitecture="x86" type="win32" /> 
<description asmv2:iconFile="Logo.ico" xmlns="urn:schemas-microsoft-com:asm.v1" /> 
<application /> 
<entryPoint> 
    <assemblyIdentity name="MyApp" version="3.8.0.25806" language="neutral" processorArchitecture="x86" /> 

如果不是我嘗試在MSBuild的腳本運行它,並使用

<Target Name="GetVersion"> 
    <Message Text="Getting version info..."/> 
    <GetAssemblyIdentity AssemblyFiles="@(GetVersionAssembly)"> 
     <Output TaskParameter="Assemblies" 
      ItemName="GetVersionAssemblyInfo"/> 
    </GetAssemblyIdentity> 
    <Message Text="%(GetVersionAssemblyInfo.Version)..."/> 
</Target> 

凡@(GetVersionAssembly)是可執行文件的路徑,該3.8.0.25806版本挑,我如何才能發佈版本,而不是程序集版本中提取的MSBuild ,使其與手動發佈相匹配?

回答

0

我最終做的是使用MSBuild.Community.Tasks庫和GetVersion目標添加下面一行,以允許發佈的版本存儲在version.txt文件中。不確定在Visual Studio中是否存在訪問發佈號的方法,並在使用msbuild發佈時增加該發佈號,如果在兩種發佈方式之間切換,將無法手動更新這些版本。我認爲這是一個半解決方案,因爲它仍然涉及手動步驟。

<Version VersionFile="version.txt" RevisionType="Increment"> <Output TaskParameter="Major" PropertyName="Major" /> <Output TaskParameter="Minor" PropertyName="Minor" /> <Output TaskParameter="Build" PropertyName="Build" /> <Output TaskParameter="Revision" PropertyName="Revision" /> </Version> 

在劇本之後我改變了所有%(GetVersionAssemblyInfo.Version)引用$(專業)。$(未成年人)。$(建設)。$(修訂版)