Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 多框架.NET核心库(VS2015更新3)_C#_.net_Nuget - Fatal编程技术网

C# 多框架.NET核心库(VS2015更新3)

C# 多框架.NET核心库(VS2015更新3),c#,.net,nuget,C#,.net,Nuget,我试图使用VS2015 Update 3创建一个简单的.NET核心库,但我发现很难找到有关某些细节的最新文档 此库应该由.NET核心库和传统的“完整的”.NET 4.6.2库和/或桌面应用程序(控制台/WPF)使用 为此,库的project.json的相关部分如下所示: "dependencies": { "NETStandard.Library": "1.6.0" }, "frameworks": { "netstandard1.5": { "imports": [ "dnxc

我试图使用VS2015 Update 3创建一个简单的.NET核心库,但我发现很难找到有关某些细节的最新文档

此库应该由.NET核心库和传统的“完整的”.NET 4.6.2库和/或桌面应用程序(控制台/WPF)使用

为此,库的project.json的相关部分如下所示:

"dependencies": {
  "NETStandard.Library": "1.6.0"
},
"frameworks": {
  "netstandard1.5": {
    "imports": [ "dnxcore50", "dotnet4.6.2" ]
   },
   "net462": {
     "frameworkAssemblies": {
       "System.Xml": "4.0.0.0",
       "System.Xml.Linq": "4.0.0.0"
    }
} 
在这里,我将
netstandard
从1.6降级到1.5,以考虑到.NET 4.6.2的兼容性,并且(这可能是可以避免的)将dotnet4.6.2添加到
imports

好了,要使用这个库,我基本上有以下选择:

  • 我可以在同一个解决方案中直接引用whithin的项目,例如,在创建用于测试的.NET核心库时(例如,对于xUnit测试库,请参阅)

  • 我可以将库打包到一个NuGet中,将其添加到本地NuGet提要()中,然后将其作为任何其他NuGet包使用。要打包库,我只需在
    project.json
    的同一目录下键入
    dotnetpack
    ;然后,我可以将生成的包安装到本地提要中,并使用它

无论如何,即使我将
net462
指定为框架,当我尝试导入生成的包时,似乎也会收到一个错误,告诉我:

Package ... is not compatible with net462 (.NETFramework,Version=v4.6.2). Package ... supports: netstandard1.6 (.NETStandard,Version=v1.6)
    One or more packages are incompatible with .NETFramework,Version=v4.6.2.
然而,我的软件包似乎正确地列出了其nuspec中的组(我可以将生成的.nupkg重命名为.zip并检查其内容),例如:



因此,我想我在创建库或其包时遗漏了一些东西。我知道这一切都很新,但有人能证实或纠正我上面的假设,并解释我如何从多个平台使用.NET Core库吗?

对于我自己的库(),几天前我对.NET标准进行了“移植”,最后提供了两个NuGet包(一个用于.NET 4.x,一个用于.NET Core)。另一方面,如果你的解决方案有效,它看起来会更优雅。我可能已经找到了一个解决方案:似乎即使我删除并重新创建了本地NuGet提要,缓存中的某个地方也留下了一些东西,因此我对.NET核心库所做的更改不会被用户代码发现。我增加了我修改过的库的版本号,它成功了。尽管如此,在这个新环境中的任何其他经验或建议都是受欢迎的。我必须补充一点,根据我的发现,从另一个.NET核心库中引用一个.NET核心库用于在同一解决方案中测试它并不总是有效的。特别是当被测试的库导入其他类似库的包时,我无法编译,就好像我什么都没有导入一样。然而,导入是正确的。试图直接从bin文件夹导入DLL,但没有任何更改。
<dependencies>
  <group targetFramework=".NETFramework4.6.2">
    <dependency id="NETStandard.Library" version="[1.6.0, )" />
  </group>
  <group targetFramework=".NETStandard1.5">
    <dependency id="NETStandard.Library" version="[1.6.0, )" />
  </group>
</dependencies>
<frameworkAssemblies>
  <frameworkAssembly assemblyName="System.Xml" targetFramework=".NETFramework4.6.2" />
  <frameworkAssembly assemblyName="System.Xml.Linq" targetFramework=".NETFramework4.6.2" />
</frameworkAssemblies>