【问题标题】:Building normal .Net project with MSBuild 15 which ships with Visual Studio 2017使用 Visual Studio 2017 附带的 MSBuild 15 构建正常的 .Net 项目
【发布时间】:2018-05-04 09:38:02
【问题描述】:

我有一个项目,目前是 .Net 版本 4.5.1,它具有正常的 .Net 项目结构。

我正在尝试在仅安装了 VS 2017 的 Windows 代理上使用 Jenkins 构建此项目。

我正在使用 VS 2017 附带的 MSBuild 15 构建此项目,该项目位于 - C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\ Bin\MSBuild.exe

但我面临错误 -

错误 MSB3644:框架的参考程序集 未找到“.NETFramework,Version=v4.5.1”。为了解决这个问题, 为此框架版本安装 SDK 或 Targeting Pack,或 将您的应用程序重新定位到您所针对的框架版本 已安装 SDK 或 Targeting Pack。请注意,程序集将 从全局程序集缓存 (GAC) 中解析,并将用于 参考组件的位置。因此,您的装配可能不是 正确定位到您想要的框架。

据我了解,我的项目没有基于 sdk 的结构 - 它没有构建解决方案,因此,我将强制管理员在windows 代理我需要根据这篇文章将我的所有项目重组为基于 sdk 的结构 -

https://www.natemcmaster.com/blog/2017/03/09/vs2015-to-vs2017-upgrade/

或者有没有更好的方法来处理这种情况?

【问题讨论】:

    标签: .net visual-studio msbuild visual-studio-2017


    【解决方案1】:

    使用 Visual Studio 2017 附带的 MSBuild 15 构建正常的 .Net 项目

    要解决此问题,您应确保在最初安装 Jenkins 的 Windows 代理上安装了 .NET Framework 4.5.1 Targeting Pack。

    您可以启动 Visual Studio 安装程序,对其进行修改,检查是否在各个组件上选择了 .NET Framework 4.5.1 targeting pack

    如果它已经安装在 Windows 代理上,那么您应该验证 jenkins 机器上的 .net 框架引用路径是否与您本地机器上的匹配。

    如果没有,您可以在使用 jenkins 构建解决方案时,使用参数 FrameworkPathOverride 和 MSBuild 命令行覆盖 .net 框架路径,例如:

    MSBuild.exe” YourSolution.sln /p:FrameworkPathOverride="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1"
    

    希望这会有所帮助。

    【讨论】:

      【解决方案2】:

      正如您的消息所述,您必须在您的构建服务器(安装了 vs2017)中安装 .net 框架 4.5.1。它是必需的,因为您的项目使用并以构建项目所需的一些 dll 为目标。

      首先你可以尝试只安装来自https://www.microsoft.com/en-us/download/details.aspx?id=40772的定位框架

      如果它不起作用,请将 4.5.1 框架的完整版本添加到安装中。

      【讨论】:

        猜你喜欢
        • 2018-03-03
        • 1970-01-01
        • 2017-08-10
        • 2018-06-02
        • 2017-05-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-01
        相关资源
        最近更新 更多