Ste*_* Li 11 .net c# .net-core
我对 netstandard 非常陌生,当我想运行具有引用 netstandard 库的 .Net Framework(控制台)的调试模式时,我刚刚遇到异常。
所以我后来发现如果我将 System.IO.Ports 从 nuget 安装到 .Net Framework 项目上,异常就会消失。但是这个库已经安装到 netstandard 项目中。
所以我非常怀疑,如果我使用另一个 .net 框架项目中的 netstandard 项目,我是否需要安装 netstandard 项目所需的所有库。
我一定遗漏了一些东西,任何熟悉 netstandard 的人都可以给我一些见解。
非常感谢您的意见!
Ahm*_*our 14
打开托管 .Net 标准库的 .Net Framework 项目的 .csproj 文件,并在第一行中添加此行<PropertyGroup>
以更改还原样式:
<RestoreProjectStyle>PackageReference</RestoreProjectStyle>
Run Code Online (Sandbox Code Playgroud)
查看Scott Hanselman撰写的有关问题原因和修复方法的文章。
从文章:
“完整”框架项目使用旧的 .csproj 格式,默认情况下,它们使用 package.config 来管理依赖项。较新的项目可以将包作为一流的参考。所以我们需要告诉这个解决方案中的所有项目将它们的包管理和恢复为“PackageReferences”。
编辑:
在一个新项目中,此修复对我来说非常有效。当我在恢复该新项目中的包之前将其应用于 csproj 时,nuget 会获得正确的引用。
将此应用于现有项目时,它不起作用。在 .net 标准类库中引用的库不是由 nuget 拉取的,因此,它仍然会抛出相同的错误。
要修复它,请尝试以下操作:
Run Code Online (Sandbox Code Playgroud)<Reference Include="yournetstandardlibrary, Version=1.0.1.0, Culture=neutral, processorArchitecture=MSIL"> <HintPath>..\packages\yournetstandardlibrary\lib\netstandard2.0\.dll</HintPath> </Reference>
Run Code Online (Sandbox Code Playgroud)<ItemGroup> <PackageReference Include="yournetstandardlibrary"> <Version>1.0.1</Version> </PackageReference> </ItemGroup>