我在我的网站解决方案中添加了一个项目。在本地和构建服务器上构建的所有内容都很好。
我在网页代码中添加了一行来调用新项目中的方法。所有内容都在本地构建和运行良好,但它破坏了构建服务器上的构建。
我遇到了一堆错误:
警告MSB3268:无法解析主要引用“C:... \ ProjectName.dll”,因为它对框架程序集“Assembly.Name(例如System.Runtime)”,Version = 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。显然,他们的依赖是无法解决的。
答案 0 :(得分: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
我对这个想法的推断是,如果它们被第三方DLL引用而不是直接从你的项目引用,那么编译器可能没有考虑Facades目录中的DDL。 / p>
正如作者所建议的那样,解决方案是找到 我认为我的问题/解决方案与博客的不同之处在于它与目标.NET Framework版本无关。它只与构建服务器的编译器是否在适当的位置查找以解决第三方DLL的依赖关系有关。 这个问题引起了十个小时的挫折。我希望这有助于其他人避免这种情况!MSB3268
警告中提到的匹配程序集的DLL,并将它们从Facades复制到其父目录。