【问题标题】:ASP.NET web site builds locally, but throws MSB3268 on the build serverASP.NET 网站在本地构建,但在构建服务器上抛出 MSB3268
【发布时间】:2018-01-05 17:14:34
【问题描述】:

我在我的网站解决方案中添加了一个项目。一切都在本地和构建服务器上构建良好。

我在 Web 代码中添加了一行来调用新项目中的方法。一切都在本地构建并运行良好,但它破坏了构建服务器上的构建。

我遇到了一堆类似这样的错误:

警告 MSB3268:无法解析主要引用“C:...\ProjectName.dll”,因为它间接依赖于框架程序集“Assembly.Name(例如 System.Runtime)”,版本 = 4.0。 0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" 无法在当前目标框架中解决。".NETFramework,Version=v4.5"。要解决此问题,请删除引用"C:...\ProjectName。 dll”或将您的应用程序重新定位到包含“System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”的框架版本。

在所有警告之后,构建失败,错误指示找不到命名空间 ProjectName。考虑到无法解决项目的依赖关系,这是有道理的。

起初我想知道是否有针对错误框架的问题。但是 4.5 网站引用了 4.0 和 4.5 项目的混合。这是第一个失败的。

此项目与其他项目的唯一区别在于它引用了第三方 DLL。所以显然他们的依赖是无法解决的。

【问题讨论】:

    标签: c# asp.net .net msbuild


    【解决方案1】:

    这个帖子是关键:http://devsilos.blogspot.com/2014/10/msb3268-while-targeting-aspnet-web-site.html

    作者建议:

    aspnet_compiler 出于某种原因没有考虑驻留在 4.5 程序集的 Facade 目录下的 .dll-s (C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.5\Facades )。 它看起来只在 C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.5

    我对这个想法的推断是,如果 Facades 目录中的 DDL被第三方 DLL 引用而不是直接从您的项目中引用,那么编译器可能不会考虑它们

    按照作者的建议,解决方案是找到与MSB3268 警告中提到的程序集匹配的 DLL,并将它们从 Facades 复制到其父目录。

    我认为我的问题/解决方案与博客的不同之处在于它与所针对的 .NET Framework 版本无关。它只与构建服务器的编译器是否在正确的位置查找以解决第三方 DLL 的依赖关系有关。

    这个问题引起了大约十个小时的挫败感。我希望这可以帮助其他人避免这种情况!

    【讨论】:

      猜你喜欢
      • 2021-06-03
      • 2017-06-30
      • 1970-01-01
      • 2014-07-10
      • 2012-01-03
      • 1970-01-01
      • 2011-10-19
      • 2012-10-08
      • 1970-01-01
      相关资源
      最近更新 更多