对于我们的 Web 项目,我需要项目的程序集版本来对我们的静态内容进行版本控制。
我在 Web 项目文件中声明了一个目标,以获取程序集标识并从中检索版本号,例如:
<PropertyGroup>
<IvanhoWebVersion>
</IvanhoWebVersion>
</PropertyGroup>
<Target Name="SetIvanhoWebVersion" AfterTargets="AfterBuild">
<Message Text="-----------------">
</Message>
<Message Text="Entering target SetIvanhoWebVersion">
</Message>
<Message Text="-----------------">
</Message>
<GetAssemblyIdentity AssemblyFiles="$(OutputPath)$(AssemblyName).dll">
<Output TaskParameter="Assemblies" ItemName="AssemblyIdentities" />
</GetAssemblyIdentity>
<CreateProperty value="%(AssemblyIdentities.Version)">
<Output TaskParameter="Value" PropertyName="IvanhoWebVersion" />
</CreateProperty>
<Message Text="Assembly version = v$(IvanhoWebVersion)">
</Message>
<Exec Command=" "$(SolutionDir)Ivanho.Lib\TranslationGenerator\TranslationGenerator.exe" "$(ProjectDir)Areas\UI\Static\locales\translationsrc\Translations-EN-NL-AR.xlsx" "$(ProjectDir)Areas\UI\Static\locales\v.$(IvanhoWebVersion)"" />
</Target>
这在本地构建时就像一个魅力,但是当尝试将其签入到我们的 TFS 构建服务器时,它会失败并出现以下错误:
无法获取“bin\Ivanho.Web.dll”的程序集名称。无法加载文件或程序集“Ivanho.Web.dll”或其依赖项之一。该系统找不到指定的路径。
此错误在调用的同一行引发GetAssemblyIdentity
。
我不知道为什么这在构建服务器上不起作用,我对 MSBuild 还是很陌生,有人能指出我正确的方向吗?提前谢谢了!