【发布时间】:2017-10-18 19:41:38
【问题描述】:
我使用 VS Code 开发了一个托管在控制台中的简单 F# Suave 应用程序。
目标框架是core 2.0,在本地运行良好。代码由 VSTS 构建和打包(参考System.Runtime 4.3.0),然后部署到 Azure 应用服务。
当我调用该网站时,它最终会超时并显示 HTTP 500,同时 suave*.log 被写入异常:
未处理的异常:System.IO.FileNotFoundException:无法加载文件或程序集“System.Runtime,Version=4.2.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”或其依赖项之一。系统找不到指定的文件。
- 我没有从 1.1 或 2.0 更改框架,无论如何清理了 wwwroot
- 在 web.config 和 app.config 中尝试了程序集重定向
这是否意味着某些包仍然引用 4.2.0.0? Azure有错吗?
【问题讨论】:
-
你有 Visual Studio 吗?如果直接通过 Visual Studio 将项目部署到 Azure 会有什么结果?你能用一个新项目重现这个问题吗? VSTS 构建和发布定义的任务是什么?能否在 OneDrive 上分享详细的 VSTS 构建和发布日志?
-
我有VS但是不能发布项目,因为它是一个consoleapp;一切都由 VSTS 完成。我还没有尝试用一个新项目来重现这个,这需要一些时间来设置。与此同时,我确实必须在 onedrive 上构建步骤和日志:link
-
能否通过 dotnet 命令 (dotnet xxx.dll) 运行该应用程序?如果是这样,您可以从 build 下载工件,然后运行它并检查结果。另一方面,对新项目进行测试可以缩小问题范围。
-
这个还没解决,虽然我发现了一些;在外部它看起来像 System.Runtime 4.3.0.0 被引用(在包目录中,在 IDE 中)但是在检查 de 编译的 dll 时,引用是 4.2.0.0。我找到了一个描述类似问题的链接 (github.com/dotnet/core/issues/730),但那里使用的解决方案还没有解决我的问题。我想尝试的下一件事是使用 Suave 部署 F# AspNetCore 应用程序,但我认为 Suave.AspNetCore 包不支持 .Net Core 2.0。我在这里重新考虑我的整个堆栈......
-
可以通过dotnet命令运行应用吗?