【问题标题】:Is it possible to use the Microsoft.NET.GenerateAssemblyInfo.targets with a non Sdk style project?是否可以将 Microsoft.NET.GenerateAssemblyInfo.targets 与非 Sdk 样式项目一起使用?
【发布时间】:2019-11-18 17:50:39
【问题描述】:

我成功地让这个在本地工作:

<Target Name="InitializeSourceControlInformation" />
<UsingTask TaskName="GetAssemblyVersion" AssemblyFile="$(MSBuildSDKsPath)\Microsoft.NET.Sdk\tools\net46\Microsoft.NET.Build.Tasks.dll" />
<Import Project="$(MSBuildSDKsPath)\Microsoft.NET.Sdk\build\Microsoft.NET.GenerateAssemblyInfo.targets" />

但它在只有 VS 2017 BuiltTools 的 CI 服务器上失败。总的来说,它给人的感觉很老套和脆弱。

但是,我仍然想使用这些目标,因为它们很棒。有没有一种强大的方法来使用它们?它们似乎不依赖于 Sdk 领域中的任何其他东西,除了一个自定义任务。

编辑 1

我们的构建服务器确实有 VS 2017 构建工具。但是开发人员都有 VS 2017 和 VS 2015。如果必须修复 Silverlight 错误,则需要后者。是的,我们还有 Silverlight。

附言

请不要建议迁移到 .NET Core。我会迁移到 Sdk 风格的项目,但还有另一个问题 - Is it possible to write VS extensions using the SDK style projects?

【问题讨论】:

    标签: .net .net-core msbuild


    【解决方案1】:

    我实际上为此创建了一个 MSBuild Sdk,因此可以将相同的逻辑用于经典项目(经典的 asp.net、.net 框架 WPF 应用程序等):https://github.com/dasMulli/AssemblyInfoGenerationSdk。也许这就是你需要的。如果它不适合你,请打开问题。

    这是通过从 .NET SDK 复制一些(MIT 开源)代码并将其打包到 MSBuild SDK 中来实现的。

    【讨论】:

    • 您能否提供有关如何使用它的说明?我应该将您的仓库中的一些文件复制到我们的代码库吗?你能提供更多细节吗?
    • 所以我需要先下载这些目标然后嵌入到我的源代码中?老实说,我宁愿有办法导入标准 sdk 目标。或者有一个 nuget 包。
    • 否,将&lt;Sdk&gt; 属性添加到描述的经典项目中,以通过 NuGet 包获取逻辑。如果您想自己构建类似的东西,您可以使用项目文件作为起点。但我的目标是添加一行代码,经典项目在程序集信息生成方面与 .net 核心项目的行为相同。
    • 哦,我没有意识到 Sdk 元素调用 nuget 来自动获取 SDK。太棒了。
    • 唉,我们仍然必须支持 VS 2015 - 我没有 &lt;Sdk&gt; 属性。这就是为什么我想通过重用各自的 Sdk 脚本来获得该功能,但以旧的方式。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-21
    • 1970-01-01
    • 2014-09-29
    • 1970-01-01
    相关资源
    最近更新 更多