完成我的nant构建后,我想使用后构建命令重命名生成的.exe文件,该命令附加到project .csproj文件的末尾(在Project元素中):

<Target Name="AfterBuild">
  <Copy SourceFiles="$(TargetDir)\$(TargetName).exe" DestinationFiles="$(TargetDir)\MyApplication-$(AssemblyFileVersion).exe" SkipUnchangedFiles="true" />
</Target>


如您在上面看到的,我试图将可执行文件重命名为:MyApplication-$(AssemblyFileVersion).exe,但是,这显然是错误的,因为生成的可执行文件只是简单地命名为:MyApplication-.exe(因此,我尝试使用的版本缺少文件名末尾的添加)。

我已经在AssemblyInfo.cs文件中定义了AssemblyFileInfoVersion,如下所示:

[assembly: AssemblyFileVersion("1.5.1")]


所以问题是:如何访问同一项目的csproj文件中的AssemblyFileVersion?

最佳答案

GetAssemblyIdentity可以获取有关已编译程序集的信息。任务输出包含有关Version,PublicKeyToken和Culture的元数据条目。

我用$(TargetDir)\$(TargetName).exe作为汇编文件。

<ItemGroup>
    <AssembliesPath Include="$(TargetDir)\$(TargetName).exe" />
</ItemGroup>

<Target Name="GetAssemblyInfo">
    <GetAssemblyIdentity AssemblyFiles="@(AssembliesPath)">
        <Output TaskParameter="Assemblies" ItemName="AssemblyInfo"/>
    </GetAssemblyIdentity>
</Target>


然后:

<Target Name="AfterBuild">
    <GetAssemblyInfo />
    <Copy SourceFiles="$(TargetDir)\$(TargetName).exe" DestinationFiles="$(TargetDir)\MyApplication-%(AssemblyInfo.Version).exe" SkipUnchangedFiles="true" />
</Target>

关于c# - 在csproj文件中引用AssemblyFileVersion,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16814600/

10-12 12:43
查看更多