0

コンパイル後、アプリマニフェストに次の情報が表示されます。VSで手動で公開すると、選択したバージョンが最初のバージョン、つまり3.9.0.3になります。

<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で抽出されたアセンブリバージョンではなく公開バージョンを取得するにはどうすればよいですか?

4

1 に答える 1

0

最終的には、MSBuild.Community.Tasksライブラリを使用し、GetVersionターゲットの次の行に追加して、公開されたバージョンをversion.txtファイルに保存できるようにしました。Visual Studio内で公開番号にアクセスし、msbuildで公開するときにその番号をインクリメントする方法があるかどうかわからないため、2つの公開方法を切り替えた場合に、これらのバージョンを手動で更新する必要がなくなります。それはまだ手動のステップを伴うので、私はこれを半分の解決策として特徴付けます。

<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)参照を$(Major)。$(Minor)。$(Build)。$(Revision)に変更しました。

于 2012-12-07T19:02:14.977 に答える