从ASP.NET Core MVC Web应用程序(RC2)引用完整框架库项目?

时间:2016-05-23 18:34:33

标签: asp.net-core asp.net-core-mvc

我目前正在使用ASP.NET Core MVC RC2,它假设支持从Core MVC Web应用程序项目引用完整的框架库项目。但我似乎无法使其发挥作用。

我有一个现有的完整框架库项目,我想在新的Core MVC Web应用程序项目中使用它。但是当我尝试添加对库项目的引用时,我得到一个错误,指出它的目标框架与Web应用程序的目标框架不兼容。

为了尝试简化问题,我创建了一个新的Core MVC Web应用程序和一个新的Windows代码库,并尝试将Web应用程序项目的引用添加到库的项目中,并得到相同的错误消息。我搜索了堆栈溢出,我确实发现这个问题似乎非常相关:How to make ASP.NET Core RC2 app build on net46 framework with older third party dependencies但我无法使用那里的信息来解决我的问题。

以下是重现问题的步骤:
我在Visual Studio 2015中基于“Web应用程序”模板创建了一个带有“.NET Core”“ASP.NET Core Web Application”项目的解决方案。

[pic 1

[pic 2

然后我在解决方案中添加了一个新的“Windows”“类库”项目。

enter image description here

所以在这一点上,解决方案看起来像这样:

pic 4

现在,当我尝试使用visual studio将Core MVC Web应用程序的引用添加到Full Framework库时,我收到一条错误消息,指出“ExampleLib的目标框架与当前项目ExampleWebApplicaiton中的目标不兼容。 “:

enter image description here

这个错误似乎相当自我解释,似乎要我改变Web应用程序所针对的框架,以便它与库相同,这非常有意义。问题是我找不到关于如何做到这一点的文档,智能感知并没有特别有用。

我怀疑我需要更改Web应用程序的project.json文件的以下部分之一:

"dependencies": {
    "Microsoft.NETCore.App": {
     "version": "1.0.0-rc2-3002702",
     "type": "platform"
   },

 "frameworks": {
    "netcoreapp1.0": {
      "imports": [
        "dotnet5.6",
        "dnxcore50",
        "portable-net45+win8"
      ]
    }
  },

如何为Core MVC Web应用程序而不是.NETCoreApp指定.NETFramework版本4.6?

2 个答案:

答案 0 :(得分:5)

有一个模板允许您定位完整的.NET框架 - 抱歉,无法发布图像,但您可以访问: 模板 - > Visual C# - >网络 - > ASP.NET核心Web应用程序(.NET Framework)

请注意,您可以从上面的下拉列表中指定.NET Framework的版本(按照惯例)。

这会将你的project.json更改为:

"frameworks": {
"net461": { }
}

(取决于您选择的框架版本)。您现在可以添加对类库的引用。

"frameworks": {
    "net461": {
    "dependencies": {
    "ClassLibrary1": {
        "target": "project"
        }
     }
   }
}

答案 1 :(得分:1)

遵循Ron C的步骤,这是我刚刚测试过的web api项目的完整project.json。

{
  "dependencies": {
    "Microsoft.AspNetCore.Mvc": "1.0.0",
    "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.0",
    "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0",
    "Microsoft.Extensions.Configuration.FileExtensions": "1.0.0",
    "Microsoft.Extensions.Configuration.Json": "1.0.0",
    "Microsoft.Extensions.Logging": "1.0.0",
    "Microsoft.Extensions.Logging.Console": "1.0.0",
    "Microsoft.Extensions.Logging.Debug": "1.0.0",
    "Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0"
  },

  "tools": {
    "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final"
  },

  "frameworks": {
    "net461": {
      "imports": [
        "dotnet5.6",
        "portable-net45+win8"
      ],
      "frameworkAssemblies": {
        "System.Data": "4.0.0.0"
      }
    }
  },

  "buildOptions": {
    "emitEntryPoint": true,
    "preserveCompilationContext": true
  },

  "runtimeOptions": {
    "configProperties": {
      "System.GC.Server": true
    }
  },

  "publishOptions": {
    "include": [
      "wwwroot",
      "Views",
      "Areas/**/Views",
      "appsettings.json",
      "web.config"
    ]
  },

  "scripts": {
    "postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]
  }
}