相关疑难解决方法(0)

AssemblyVersion,AssemblyFileVersion和AssemblyInformationalVersion之间有什么区别?

有三个程序集版本属性.有什么区别?如果我使用AssemblyVersion并忽略其余部分可以吗?


MSDN说:


这是使用装配属性的最佳做法的后续行动

.net attributes assemblies

844
推荐指数
6
解决办法
17万
查看次数

从AssemblyInfo后编译中读取AssemblyFileVersion

如何在编译后读取.csproj中的AssemblyFileVersion或其组件AssemblyFileMajorVersion,AssemblyFileMinorVersion,AssemblyFileBuildNumber,AssemblyFileRevision

我尝试了以下从构建的程序集中提取信息:

<Target Name="AfterCompile">
    <GetAssemblyIdentity AssemblyFiles="$(TargetPath)">
         <Output
             TaskParameter="Assemblies"
             ItemName="MyAssemblyIdentities"/>
    </GetAssemblyIdentity>
    <Message Text="AssemblyVersion = %(MyAssemblyIdentities.Version)" />
</Target>
Run Code Online (Sandbox Code Playgroud)

但是,它检索AssemblyVersion而不是AssemblyFileVersion.对于后者,似乎没有记录的元数据条目.我也尝试过:

<Import Project="$(MSBuildExtensionsPath)\ExtensionPack\MSBuild.ExtensionPack.tasks" />
<Target Name="AfterCompile">
    <MSBuild.ExtensionPack.Framework.Assembly TaskAction="GetInfo" NetAssembly="$(TargetPath)">
        <Output TaskParameter="OutputItems" ItemName="Info" />
    </MSBuild.ExtensionPack.Framework.Assembly>
    <Message Text="AssemblyFileVersion = %(Info.FileVersion)" />
</Target>
Run Code Online (Sandbox Code Playgroud)

不幸的是,虽然这会检索正确的值,但它也会锁定程序集,直到VS2008关闭.

坦率地说,我不想要什么,因为我宁愿直接从AssemblyInfo.cs读取信息.但是,我无法弄清楚如何做到这一点.我假设MSBuild Extensions中的AssemblyInfo是一种方式,但它似乎专注于写入AssemblyInfo而不是从中检索值.

我怎样才能最好地完成这个?

.net versioning msbuild assemblies

12
推荐指数
1
解决办法
8154
查看次数

标签 统计

.net ×2

assemblies ×2

attributes ×1

msbuild ×1

versioning ×1