引用NetStandard项目的传统控制台应用程序抛出FileNotFoundException

时间:2017-03-03 11:29:26

标签: c# .net visual-studio-2017 .net-standard

我有2个项目(VS 2017 RC)

  • MyLib(NetStandard1.4) - 引用e.q. Newtonsoft.Json
  • MyConsoleApp(普通,传统控制台应用程序,目标.Net 4.6.1) - 引用MyLib项目

编译后我得到:

MyLib中

  • 斌\调试\ netstandard1.4 \中是指mylib.dll
  • 斌\调试\ netstandard1.4 \ MyLib.pdb
  • bin \ Debug \ netstandard1.4 \ MyLib.deps.json< - 它有关于引用Newtonsoft.Json的信息

MyConsoleApp

  • 斌\调试\中是指mylib.dll
  • 斌\调试\ MyLib.pdb
  • 斌\调试\ MyConsoleApp.exe
  • 斌\调试\ MyConsoleApp.exe.config
  • 斌\调试\ MyConsoleApp.pdb

MyconosleApp输出缺少Newtonsoft.Json。当我运行它时,我得到FileNotFoundException(Newtonsoft.Json.dll)。

如何使其工作(不将MyConosleApp迁移到网络核心)?

2 个答案:

答案 0 :(得分:4)

根据Andrew Cahill的建议,我在GitHub上找到了这个帖子:

https://github.com/NuGet/Home/issues/4488

它看起来像是一个错误,他们会修复它。解决方法是将以下代码复制粘贴到传统应用程序.csprj文件中。 (无需修改代码段)

  <ItemGroup>
    <PackageReference Include="Legacy2CPSWorkaround" Version="1.0.0">
      <PrivateAssets>All</PrivateAssets>
    </PackageReference>
  </ItemGroup>

它以某种方式鼓励VS获取所有引用项目的依赖项。

答案 1 :(得分:1)

请参阅此前类似的堆栈溢出帖子:Newtonsoft.JSON v9.01 + FileNotFoundException (.NET Core Class library) 我希望这可能有所帮助。