当Net Framework引用Net标准库时,无法加载文件或程序集

时间:2018-12-05 17:43:06

标签: c# .net .net-core

我对netstandard非常陌生,当我想在调试模式下运行引用了netstandard库的.Net Framework(控制台)时遇到了异常。

The Solution Structure

Exception

因此,我后来发现,如果我将nuget中的System.IO.Ports安装到.Net Framework Project中,该异常将消失。但是该库已经安装到netstandard项目上。

所以我非常怀疑,如果我使用另一个.net框架项目中的netstandard项目,是否需要安装netstandard项目所需的所有库。

我必须缺少一些东西,熟悉netstandard的任何人都能给我一些见解。

非常感谢您的投入!

1 个答案:

答案 0 :(得分:1)

为托管.Net标准库的.Net Framework项目打开.csproj文件,并在第一个<PropertyGroup>中添加此行,如下所示,以更改还原样式:

<RestoreProjectStyle>PackageReference</RestoreProjectStyle>

请查看Scott Hanselman的article,了解问题的原因和解决方法。

摘自文章:

  

“完整”框架项目使用的是较旧的.csproj格式,默认情况下,它们使用package.config来管理依赖项。较新的项目可以将Packages作为一流的参考。因此,我们需要告诉该解决方案中的所有项目,以“ PackageReferences”的身份管理和还原其软件包。

编辑:

此修复程序对我在新项目中的工作非常理想。当我在该新项目中还原软件包之前将其应用于csproj时,nuget将获得正确的引用。

将其应用于现有项目时,将无法使用。 .net标准类库中引用的库不会被nuget拉取,因此,它仍然会引发相同的错误。

要解决此问题,请尝试以下操作:

  1. 打开csproj。您会发现您的图书馆看起来像这样
<Reference Include="yournetstandardlibrary, Version=1.0.1.0, Culture=neutral, processorArchitecture=MSIL">
      <HintPath>..\packages\yournetstandardlibrary\lib\netstandard2.0\.dll</HintPath>
    </Reference>
  1. 删除该引用
  2. 改为添加此参考
 <ItemGroup>
     <PackageReference Include="yournetstandardlibrary">
       <Version>1.0.1</Version>
     </PackageReference>   
  </ItemGroup>