【问题标题】:How to redirect probing for assemblies in .NET Core?如何重定向对 .NET Core 中程序集的探测?
【发布时间】:2018-10-05 12:48:07
【问题描述】:

我有一个位于 App 文件夹中的 ASP.NET Core MVC 应用程序。而且我没有使用 Kestrel 或 IIS Express 来运行它。相反,我们有一个基础架构,可以直接在 IIS 中托管 App 文件夹,并执行更多操作以使我们的开发环境与我们的生产环境 (DevOps) 非常相似。

一切正常。当我构建时,输出进入 bin\Debug\netcoreapp2.0 文件夹,我们有一个 Web.config 文件,我们在其中配置了 AspNetCoreModule 以从该路径加载条目 DLL。

现在我想使用 ClosedXML,它依赖于 System.Drawing.Common 库。

当我构建和测试我的应用程序时,我遇到了这个错误:

应用程序依赖清单中指定的程序集 (App.deps.json) 未找到:
包:'System.Drawing.Common',版本:'4.5.0-preview1-25914-04'
路径:'runtimes/win/lib/netcoreapp2.0/System.Drawing.Common.dll'

关键是,我有一个托管应用程序的bin\Debug\netcoreapp2.0 文件夹,我可以确认System.Drawing.Common 已经复制到那里。然而似乎 MSBuild 没有将其复制到预期的 bin\Debug\netcoreapp2.0\runtimes\win\lib\netcoreapp2.0 文件夹中。

我可以将请求的库复制到给定的文件夹,即runtime/win/lib/netcoreapp2.0,并且应用程序可以正常工作。

我可以向我的App.runtimeconfig.json 添加额外的探测路径。

我可以在我的App.deps.json 中将这个库的搜索路径更改为同一目录。

但这些都是手动完成的。

如何让构建过程将依赖项复制到正确的位置?

【问题讨论】:

    标签: c# visual-studio iis .net-core asp.net-core-mvc


    【解决方案1】:

    您可以使用Publish 命令来创建您的输出目录。从命令行使用dotnet publish,或者在 Visual Studio 的解决方案资源管理器中,右键单击您的项目 -> 发布。

    当您只是 Build 应用程序时,来自 NuGet 包的依赖程序集将保留在 NuGet 缓存文件夹中。当你 F5/dotnet 运行你的应用程序时,它们会从 NuGet 缓存文件夹中加载。但是,如果您希望您的应用程序文件夹准备好在 VS/dotnet run 之外的不同环境中运行,那么您应该发布您的应用程序。

    【讨论】:

      猜你喜欢
      • 2021-01-15
      • 1970-01-01
      • 2017-02-16
      • 2019-06-29
      • 1970-01-01
      • 1970-01-01
      • 2021-02-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多