Class 库(包)中的目标特定框架
Target specific framework in Class Library (Package)
我正在尝试在 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:\Users\Epic\Documents\artifacts\bin\Foo\Release\Foo.1.0.0-beta-1.nupkg
现在我创建一个 Web 项目并编辑其 project.json
文件,使其仅针对 dnx451
框架:
"frameworks": {
"dnx451": { }
},
当我添加对 Foo
包的引用时,出现错误:
The dependency Foo 1.0.0-beta-1 in project WebApplication7 does not support framework DNX,Version=v4.5.1.
如何从支持 dnx451
的 Class Library (Package)
项目创建 Nuget 包?
根据下面的评论,这是完整的 project.json
网络应用程序:
{
"userSecretsId": "aspnet5-WebApplication7-0b4c05f0-6435-486b-9738-1b6aa3daee2c",
"version": "1.0.0-*",
"compilationOptions": {
"emitEntryPoint": true
},
"dependencies": {
"EntityFramework.Commands": "7.0.0-rc1-final",
"EntityFramework.MicrosoftSqlServer": "7.0.0-rc1-final",
"Microsoft.AspNet.Authentication.Cookies": "1.0.0-rc1-final",
"Microsoft.AspNet.Diagnostics.Entity": "7.0.0-rc1-final",
"Microsoft.AspNet.Identity.EntityFramework": "3.0.0-rc1-final",
"Microsoft.AspNet.IISPlatformHandler": "1.0.0-rc1-final",
"Microsoft.AspNet.Mvc": "6.0.0-rc1-final",
"Microsoft.AspNet.Mvc.TagHelpers": "6.0.0-rc1-final",
"Microsoft.AspNet.Server.Kestrel": "1.0.0-rc1-final",
"Microsoft.AspNet.StaticFiles": "1.0.0-rc1-final",
"Microsoft.AspNet.Tooling.Razor": "1.0.0-rc1-final",
"Microsoft.Extensions.CodeGenerators.Mvc": "1.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.UserSecrets": "1.0.0-rc1-final",
"Microsoft.Extensions.Logging": "1.0.0-rc1-final",
"Microsoft.Extensions.Logging.Console": "1.0.0-rc1-final",
"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": "1.0.0-beta-1"
},
"commands": {
"web": "Microsoft.AspNet.Server.Kestrel",
"ef": "EntityFramework.Commands"
},
"frameworks": {
"dnx451": { }
},
"exclude": [
"wwwroot",
"node_modules"
],
"publishExclude": [
"**.user",
"**.vspscc"
],
"scripts": {
"prepublish": [ "npm install", "bower install", "gulp clean", "gulp min" ]
}
}
class 库也应该有它自己的 project.json
并定义它支持的框架:
"frameworks": {
"dnx451": { }
}
如果您添加对项目的引用,请不要添加版本号,因为它会在任何 Nugget 提要上搜索包。
只需添加对 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": ""
},
看看 this 答案。
仅当两个项目都在同一解决方案中时,您才能添加对 class 库项目的直接引用。
如果您的项目不在同一个解决方案中,您必须转到 class 库项目属性,打开“构建”选项卡并选中“在构建时生成输出”选项
NuGet 包将在每个项目构建的{SolutionDir}\artifacts\bin{ProjectName}{Configuration} 目录中创建。
要使用该库,请将 NuGet 包发布到 nuget.org 或任何其他 NuGet 提要,然后使用 Visual Studio(参考 ~> 管理 NuGet 包...)将其添加到您的项目或添加到依赖项属性 在 project.json.
我按照你问题中提到的相同程序进行操作
我在同一个解决方案中创建了 class 库和 Web 项目,一切正常。
因为您更专注于使它成为 dnx451 的 NuGet 包目标。我在单独的解决方案中创建了另一个 Web 应用程序,是的,它会抛出错误,因为命名的 NuGet 包很多 "Foo"。我想由于这种恢复包的问题,因为它指的是 Global NuGet 提要。
然后我尝试使用这个 link How to install a Nuget Package .nupkg file locally?
在本地引用 "Foo" Nuget 包
确保新创建的本地包源应该在 TOP 和 Offical NuGet 第二位。
在此之后,我在单独的解决方案中恢复了 Web 应用程序,它构建良好并且 运行 也正常。甚至我也在控制台应用程序中安装了这个 NUGET
希望一切顺利。
我正在尝试在 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:\Users\Epic\Documents\artifacts\bin\Foo\Release\Foo.1.0.0-beta-1.nupkg
现在我创建一个 Web 项目并编辑其 project.json
文件,使其仅针对 dnx451
框架:
"frameworks": {
"dnx451": { }
},
当我添加对 Foo
包的引用时,出现错误:
The dependency Foo 1.0.0-beta-1 in project WebApplication7 does not support framework DNX,Version=v4.5.1.
如何从支持 dnx451
的 Class Library (Package)
项目创建 Nuget 包?
根据下面的评论,这是完整的 project.json
网络应用程序:
{
"userSecretsId": "aspnet5-WebApplication7-0b4c05f0-6435-486b-9738-1b6aa3daee2c",
"version": "1.0.0-*",
"compilationOptions": {
"emitEntryPoint": true
},
"dependencies": {
"EntityFramework.Commands": "7.0.0-rc1-final",
"EntityFramework.MicrosoftSqlServer": "7.0.0-rc1-final",
"Microsoft.AspNet.Authentication.Cookies": "1.0.0-rc1-final",
"Microsoft.AspNet.Diagnostics.Entity": "7.0.0-rc1-final",
"Microsoft.AspNet.Identity.EntityFramework": "3.0.0-rc1-final",
"Microsoft.AspNet.IISPlatformHandler": "1.0.0-rc1-final",
"Microsoft.AspNet.Mvc": "6.0.0-rc1-final",
"Microsoft.AspNet.Mvc.TagHelpers": "6.0.0-rc1-final",
"Microsoft.AspNet.Server.Kestrel": "1.0.0-rc1-final",
"Microsoft.AspNet.StaticFiles": "1.0.0-rc1-final",
"Microsoft.AspNet.Tooling.Razor": "1.0.0-rc1-final",
"Microsoft.Extensions.CodeGenerators.Mvc": "1.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.UserSecrets": "1.0.0-rc1-final",
"Microsoft.Extensions.Logging": "1.0.0-rc1-final",
"Microsoft.Extensions.Logging.Console": "1.0.0-rc1-final",
"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": "1.0.0-beta-1"
},
"commands": {
"web": "Microsoft.AspNet.Server.Kestrel",
"ef": "EntityFramework.Commands"
},
"frameworks": {
"dnx451": { }
},
"exclude": [
"wwwroot",
"node_modules"
],
"publishExclude": [
"**.user",
"**.vspscc"
],
"scripts": {
"prepublish": [ "npm install", "bower install", "gulp clean", "gulp min" ]
}
}
class 库也应该有它自己的 project.json
并定义它支持的框架:
"frameworks": {
"dnx451": { }
}
如果您添加对项目的引用,请不要添加版本号,因为它会在任何 Nugget 提要上搜索包。
只需添加对 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": ""
},
看看 this 答案。
仅当两个项目都在同一解决方案中时,您才能添加对 class 库项目的直接引用。
如果您的项目不在同一个解决方案中,您必须转到 class 库项目属性,打开“构建”选项卡并选中“在构建时生成输出”选项
NuGet 包将在每个项目构建的{SolutionDir}\artifacts\bin{ProjectName}{Configuration} 目录中创建。
要使用该库,请将 NuGet 包发布到 nuget.org 或任何其他 NuGet 提要,然后使用 Visual Studio(参考 ~> 管理 NuGet 包...)将其添加到您的项目或添加到依赖项属性 在 project.json.
我按照你问题中提到的相同程序进行操作
我在同一个解决方案中创建了 class 库和 Web 项目,一切正常。
因为您更专注于使它成为 dnx451 的 NuGet 包目标。我在单独的解决方案中创建了另一个 Web 应用程序,是的,它会抛出错误,因为命名的 NuGet 包很多 "Foo"。我想由于这种恢复包的问题,因为它指的是 Global NuGet 提要。
然后我尝试使用这个 link How to install a Nuget Package .nupkg file locally?
在本地引用 "Foo" Nuget 包
确保新创建的本地包源应该在 TOP 和 Offical NuGet 第二位。
在此之后,我在单独的解决方案中恢复了 Web 应用程序,它构建良好并且 运行 也正常。甚至我也在控制台应用程序中安装了这个 NUGET
希望一切顺利。