在类库(包)中定位特定框架

时间:2016-01-26 01:50:15

标签: asp.net visual-studio-2015 asp.net-core asp.net-core-mvc .net-core

我正在尝试在VS 2015中使用新的Class Library (Package)项目。

我想定位dnx451,所以我的package.json看起来像这样:

{
  "version": "1.0.0-beta-1",
  "description": "Foo",
  "authors": [ "Foo" ],
  "tags": [ "" ],
  "projectUrl": "",
  "licenseUrl": "",

  "dependencies": {
    "Newtonsoft.Json": "8.0.1",
    "Microsoft.AspNet.Razor": "4.0.0-rc1-final",
    "Microsoft.Extensions.Configuration": "1.0.0-rc1-final",
    "Microsoft.AspNet.Mvc.TagHelpers": "6.0.0-rc1-final",
    "Microsoft.Extensions.Configuration.FileProviderExtensions": "1.0.0-rc1-final",
    "Microsoft.Extensions.Configuration.Json": "1.0.0-rc1-final",
    "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0-rc1-final",
    "System.Net.Http": "4.0.1-beta-23516"
  },

  "frameworks": {
    "dnx451": { }
  }
}

构建很好,我得到了:

  

Recaptcha-dnxcore - > C:\用户\史诗\文件\工件\ BIN \富\发布\ Foo.1.0.0-β-1.nupkg

现在我创建一个Web项目并编辑其project.json文件,使其仅定位dnx451框架:

"frameworks": {
    "dnx451": { }
 },

当我添加对Foo包的引用时,出现错误:

  

项目WebApplication7中的依赖关系Foo 1.0.0-beta-1不支持框架DNX,Version = v4.5.1。

如何从支持Class Library (Package)的{​​{1}}项目创建Nuget包?

根据下面的评论,这是网络应用的完整dnx451

project.json

4 个答案:

答案 0 :(得分:1)

我按照你问题中提到的相同程序

  1. 我在同一个解决方案中创建了类库和Web项目,一切正常。

  2. 由于您更专注于将NuGet包目标设为dnx451。我在单独的解决方案中创建了另一个Web应用程序,是的,它会引发错误,因为命名的NuGet包很多" Foo"。我想由于这个包的恢复在引用Global NuGet feed时存在问题。

  3. 然后我尝试引用" Foo"使用此链接How to install a Nuget Package .nupkg file locally?

  4. 在本地Nuget包
  5. 确保新创建的本地Package Source应位于TOP和Offical NuGet的第二位。

  6. 在此之后,我在单独的解决方案中恢复了Web应用程序,它构建正常并且也正常运行。甚至我也在控制台应用程序中安装了这个NUGET

  7. 希望这会成功。

答案 1 :(得分:0)

类库也应该拥有它自己的project.json并定义它支持的框架:

"frameworks": {
    "dnx451": { }
 }

答案 2 :(得分:0)

如果您添加对项目的引用,请不要添加版本号,因为它会在任何Nugget Feed上搜索包。

只需添加对Foo的引用,如下所示:

    "Microsoft.Extensions.Logging.Debug": "1.0.0-rc1-final",
    "Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0-rc1-final",
    "System.Net.Http": "4.0.1-beta-23516",
    "Foo": ""
  },

答案 3 :(得分:0)

查看this回答。

只有当两个项目都在同一个解决方案中时,才能添加对类库项目的直接引用。

如果您的项目不在同一个解决方案中,则必须转到类库项目属性,打开“构建”选项卡并选中“在构建选项上生成输出”

enter image description here

将在每个项目构建的{SolutionDir} \ artifacts \ bin {ProjectName} {Configuration}目录中创建NuGet包。

要使用该库,请将NuGet包发布到nuget.org或任何其他NuGet源,并使用Visual Studio(References~> Manage NuGet Packages ...)或项目中的dependencies属性将其添加到项目中。 JSON。