c# - 无法将引用类库的 ASP.NET 5 发布到 Azure

标签 c# asp.net azure asp.net-core class-library

最初我有一个可用的 ASP.NET 5 项目,可以毫无问题地发布到 Azure。然后我决定将 DAL 拆分为一个单独的类项目,但遇到了许多依赖问题。然后我决定创建一个带有空白类库的空白项目,看看我是否可以找出问题所在,但我什至无法发布它。

步骤:

  1. 创建新的 ASP.NET 5 Web API 预览模板项目(同时创建解决方案)。
  2. 将类库添加到解决方案。
  3. 将类库目标框架从 4.6 更改为 .NET 4.5.1
  4. 来自 ASP.NET 5 项目的引用类库。
  5. 尝试发布。

这是项目结构:

enter image description here

生成的 ASP.NET 5 project.json:

"frameworks": {
    "dnx451": {
        "dependencies": {
            "ClassLibrary1": "1.0.0-*"
        }
    },
    "dnxcore50": { }
},

因此它引用成功,我可以在自托管上构建和部署,但如果我尝试将其发布到 Azure,我会收到以下错误消息:

The "Dnu" task failed unexpectedly.
System.Exception: 
Microsoft .NET Development Utility CLR-x86-1.0.0-beta6-12256
Copying to output path C:\Users\MyUserDir\AppData\Local\Temp\PublishTemp
Time elapsed 00:00:04.1309210

   at Microsoft.DNX.Tasks.Dnu.Execute()
   at      Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()
   at Microsoft.Build.BackEnd.TaskBuilder.    <ExecuteInstantiatedTask>d__26.MoveNext()

我使用的是 Visual Studio 2015 和 ASP.NET 5 Beta 7。

编辑: 经过一番尝试后,我认为我的答案不太正确。我现在意识到,在某些情况下,人们无法使用新型类库,例如现有的旧类库,移植可能不切实际。有什么办法可以做到这一点吗?

我尝试过dnupublish并且它发布得非常好。然后,我将输出通过 FTP 传输到服务器上,但随后出现了运行时错误。我尝试使用 Visual Studio 远程调试它。当我访问该网站时,我可以看到抛出异常,但我无法看出问题到底是什么。第一个抛出的异常是:

抛出异常:AspNet.Loader.dll 中的“System.InvalidOperationException”

当我查看日志时,它给我无法确定要运行的适当版本的运行时。

最佳答案

事实证明我使用了不正确的类库项目。我显然使用的是旧的类库,而不是新的 PREVIEW 版本,该版本也标有 (Package)

Class Library Project

描述让我有点困惑,因为它说它用于创建 NuGet 包,但现在一切正常,并且 ASP.NET 5 项目可以部署到 Azure 并成功引用类库。

关于c# - 无法将引用类库的 ASP.NET 5 发布到 Azure,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31937124/

相关文章:

c# - IOException with File.Copy() 尽管之前有 File.Exists() 检查

c# - 使用 C# 检查字符串是否出现其他字符串并相应地更改字符串的有效方法

javascript - 在 ContentPage 中使用 Javascript 更改 <body> ID

git - 将 Azure DevOps 连接到内部 IP 存储库

c# - 如何从 ASP .NET Core 中创建 Azure AD 用户?

c# - 将带有月份名称的日期解析为 C# DateTime

c# - AWS SQS - 插入一条消息但只能获取一个列表?

asp.net - .NET 身份电子邮件/用户名更改

asp.net - ColorBox(jquery 插件)回发后我的文本框值为空

azure - 此虚拟机规模集已被池使用