完成我的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/