我遇到了一个奇怪的问题。
我基本上拥有自己的.NET-core web-stack,我已经将其构建到一些.dll中,我想从另一个ASP CORE解决方案中引用它们。
VS似乎找到了程序集,我可以在其中导航类型等。 我也可以毫无问题地构建项目,但是当IIS运行服务器时,我收到内部服务器错误说明:
FileNotFoundException:无法加载文件或程序集' myDLL ,版本= 1.0.0.0,Culture = neutral,PublicKeyToken = null'。系统找不到指定的文件。
引用的DLL位于debug-folder中,真正奇怪的是,如果我在与Web堆栈相同的解决方案中创建一个新的ASP Core项目,我可以毫无问题地引用和使用它。
为什么只有在外部 web-stack的解决方案上运行时才会发生这种情况,我该怎样做才能让它在任何地方都可以运行?
答案 0 :(得分:29)
VS 2017中的.NET核心工具(< 15.3预览版)/ .NET CLI< 2.0不完全支持磁盘上的引用程序集。您需要将库打包为NuGet包或使用项目引用(“相同的解决方案”)。技术原因是在编译期间解析了所有必需的程序集和版本并将其写入.deps.json
文件。加载任意程序集时,这可能会失败,因为无法找到程序集或其依赖项(或彼此冲突)。
答案 1 :(得分:0)
要在external dll
项目中加载core
,需要:
Microsoft.Extensions.DependencyModel
已在您的项目中安装了NuGet软件包。