Questions tagged «.net-standard»

.NET标准是.NET API的正式规范,旨在在所有.NET运行时上提供。.NET标准背后的动机是在.NET生态系统中建立更大的统一性。考虑在您的问题中标记一个更特定版本的.NET Standard。

12
.NET Core和.NET标准类库项目类型之间有什么区别?
在Visual Studio中,至少可以创建3种不同类型的类库: 类库(.NET Framework) 类库(.NET标准) 类库(.NET Core) 尽管第一个是我们多年来一直在使用的东西,但我一直感到困惑的主要点是何时使用.NET Standard和.NET Core类库类型。尝试多目标化不同的框架版本并创建单元测试项目时,我最近对此颇为bit恼。 那么,类库(.NET Standard)和类库(.NET Core)有什么区别,为什么两者都存在,以及何时应在另一个之上使用?

7
.NET Standard与.NET Core
我已经阅读了.NET Standard和.NET Core之间的区别,但是我真的不知道区别是什么,何时选择.NET Standard库项目以及何时选择.NET Core库项目。 我已经读过.NET Standard是为了确保无论使用什么平台,一组API始终可用(只要该平台与我选择的.NET Standard版本兼容)。如果我没记错的话,这意味着我可以创建.NET Standard的类库,然后在与我选择的.NET Standard版本兼容的任何平台上使用它。 使用.NET Core,我已经读到它也打算用于跨平台使用,因此,如果选择.NET Core库,似乎也可以在许多平台上使用它,就像.NET Standard一样。 所以最后,我看不出有什么区别。我什么时候应该使用哪个?它们之间有什么区别?

5
VS2017 .Net标准库中的单元测试内部方法
我目前正在通过创建.Net Standard 1.6库来使用最新的Visual Studio 2017 Release Candidate。我正在使用xUnit对代码进行单元测试,并且想知道是否仍然可以在VS2017中测试内部方法。 我记得您可以在VS2015中全部使用AssemblyInfo.cs类,这将使指定的项目能够查看内部方法 [assembly:InternalsVisibleTo("MyTests")] 由于VS2017 .Net Standard项目中没有AssemblyInfo.cs类,我想知道您是否仍可以对内部方法进行单元测试?

5
.NET Core 2.0中是否提供ConfigurationManager.AppSettings?
我有一个方法可以从我的配置文件中读取设置,如下所示: var value = ConfigurationManager.AppSettings[key]; 仅针对.NET Standard 2.0时,它编译良好。 现在我需要多个目标,因此我使用以下命令更新了项目文件: <TargetFrameworks>netcoreapp2.0;net461;netstandard2.0</TargetFrameworks> 但是现在,编译失败netcoreapp2.0并显示以下错误消息: Error CS0103 The name 'ConfigurationManager' does not exist in the current context (netcoreapp2.0) 另外,我创建了一个新的.NET Core 2.0控制台应用程序(这次仅针对.NET Core 2.0),但是同样,ConfigurationManager在命名空间下似乎也没有System.Configuration。 我很困惑,因为它在.NET Standard 2.0下可用,因此我希望它在.NET Core 2.0中可用,因为.NET Core 2.0符合.NET Standard 2.0。 我想念什么?


6
我应该将ILogger,ILogger <T>,ILoggerFactory或ILoggerProvider用于库吗?
这可能与将ILogger或ILoggerFactory传递给AspNet Core中的构造函数有关吗?,但这是专门针对库设计的,而不是有关使用这些库的实际应用程序如何实现其日志记录的。 我正在编写一个将通过Nuget安装的.net Standard 2.0库,并且为了允许使用该库的人们获得一些调试信息,我依赖于Microsoft.Extensions.Logging.Abstractions来允许注入标准化的Logger。 但是,我看到了多个接口,并且网络上的示例代码有时ILoggerFactory会在类的ctor中使用并创建一个记录器。还有ILoggerProvider一个看起来像是Factory的只读版本,但是实现可能会也可能不会实现这两个接口,因此我不得不选择。(工厂似乎比提供程序更常见)。 我见过的某些代码使用非泛型ILogger接口,甚至可能共享同一记录器的一个实例,而某些代码采用了一个ILogger&lt;T&gt;ctor,并期望DI容器支持开放的泛型类型或ILogger&lt;T&gt;我的库中每个变体的显式注册。用途。 现在,我确实认为这ILogger&lt;T&gt;是正确的方法,也许是不采用该参数而仅通过Null Logger的ctor。这样,如果不需要日志记录,则不使用任何日志记录。但是,某些DI容器会选择最大的ctor,因此无论如何都会失败。 我很好奇我在这里应该做的事情,以便为用户带来最少的麻烦,同时在需要时仍允许适当的日志记录支持。

15
Visual Studio 2017(.NET Core)中的自动版本控制
我花了大部分时间尝试在.NETCoreApp 1.1(Visual Studio 2017)中找到一种自动递增版本的方法。 我知道AssemblyInfo.cs是在文件夹中动态创建的: obj/Debug/netcoreapp1.1/ 它不接受以下旧方法: [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.*")] 如果将项目设置为可打包,则可以在其中设置版本,但这似乎用于构建AssemblyInfo.cs文件。 我的问题是,有没有人想出如何控制.NET Core(或相应的.NETStandard)项目中的版本。

3
取决于元包的netstandard库对应用程序有何影响?
假设我有一个要针对netstandard1.3的类库,但也要使用BigInteger。这是一个简单的示例-唯一的源文件是Adder.cs: using System; using System.Numerics; namespace Calculator { public class Adder { public static BigInteger Add(int x, int y) =&gt; new BigInteger(x) + new BigInteger(y); } } 回到的世界project.json,我将以netstandard1.3本frameworks节为目标,并明确依赖于System.Runtime.Numerics例如4.0.1版。我创建的nuget包将仅列出该依赖项。 在基于csproj的dotnet工具的崭新世界(我正在使用命令行工具的v1.0.1),在目标定位时有一个隐式的metapackage包引用。这意味着我的项目文件非常小,因为它不需要显式依赖:NETStandard.Library 1.6.1netstandard1.3 &lt;Project Sdk="Microsoft.NET.Sdk"&gt; &lt;PropertyGroup&gt; &lt;TargetFramework&gt;netstandard1.3&lt;/TargetFramework&gt; &lt;/PropertyGroup&gt; &lt;/Project&gt; ...但是生成的nuget包依赖于NETStandard.Library,这表明要使用我的小图书馆,您需要那里的一切。 事实证明,我可以使用禁用该功能DisableImplicitFrameworkReferences,然后再次手动添加依赖项: &lt;Project Sdk="Microsoft.NET.Sdk"&gt; &lt;PropertyGroup&gt; &lt;TargetFramework&gt;netstandard1.3&lt;/TargetFramework&gt; &lt;DisableImplicitFrameworkReferences&gt;true&lt;/DisableImplicitFrameworkReferences&gt; &lt;/PropertyGroup&gt; &lt;ItemGroup&gt; &lt;PackageReference Include="System.Runtime.Numerics" Version="4.0.1" /&gt; &lt;/ItemGroup&gt; …

14
黄色警告三角形对Visual Studio 2017中的依赖关系意味着什么?
我刚刚将PCL库转换为新的.Net Standard库,并且在依存关系上有一些黄色警告三角形,如下所示: 在转换过程中,它使所有nuget包(包括依赖项)都遍历,因此可以重复。 如何找出黄色警告三角形代表什么? 编辑 构建日志: 要阻止NuGet在构建过程中还原软件包,请打开“ Visual Studio选项”对话框,单击“软件包管理器”节点,然后取消选中“允许NuGet在构建过程中下载丢失的软件包”。NU1605:检测到软件包降级:NUnit从3.8.1降到2.6.4。直接从项目中引用包以选择其他版本。 MyProj.UI.Tests-&gt; MyProj.Core.Tests-&gt; NUnit(&gt; = 3.8.1) MyProj.UI.Tests-&gt; NUnit(&gt; = 2.6.4)NU1605:检测到包降级:NUnit从3.8.1降到2.6.4。直接从项目中引用包以选择其他版本。MyProj.UI.Tests.iOS-&gt; MyProj.UI.Tests-&gt; MyProj.Core.Tests-&gt; NUnit(&gt; = 3.8.1)MyProj.UI.Tests.iOS-&gt; NUnit(&gt; = 2.6.4)NU1605:检测到的软件包降级:NUnit从3.8.1降到2.6.4。直接从项目中引用包以选择其他版本。 MyProj.UI.Tests.Android-&gt; MyProj.UI.Tests-&gt; MyProj.Core.Tests-&gt; NUnit(&gt; = 3.8.1)MyProj.UI.Tests.Android-&gt; NUnit(&gt; = 2.6.4)

2
docs.microsoft.com上的.NET平台扩展是什么?
Microsoft Docs上有一个名为“ .NET Platform Extensions”的框架级导航元素。它包含有关最近添加的API(例如System.IO.Pipelines和)的文档System.Threading.Channels,以及一堆其他API(包括不太最新的API)的文档。 此集合中的某些API可作为nuget包(适用于.Net Core和.Net Framework)提供,但其他API似乎不可用。另外,到目前为止,还没有名为“ .NET平台扩展”或任何类似程序的nuget程序包。 因此,问题是这些API集合究竟代表什么?它与以下各项有什么关系: .Net框架 .Net核心 .Net标准 .Net Framework / .Net Core中的支持如何? 最后,一些API似乎已经可以作为单独的nuget包使用,而另一些API尚未提供,那么这方面的故事是什么呢?

3
将.NET Core 2.0类库转换为.NET Standard
有没有一种方法可以轻松地将针对.NET Core 2.0的类库转换为.NET Standard? 如果我理解正确,那么如果希望在针对不同.NET框架(例如.NET Framework,.NET Core,Xamarin等)的项目中最大化类库的可重用性,那么针对.NET Standard是一个更好的主意-前提是目标所需的.NET Standard版本中提供了所有必需的API。 这就是为什么要将类库从.NET Core 2.0转换为.NET Standard 1.6或.NET Standard 2.0的原因。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.