.NET 标准:依赖项未复制到输出目录

Mas*_*r_T 7 c# .net-standard

我正在将 .NET Framework 库转换为 .NET Standard 2.0,因为我需要在旧的 .NET Framework 项目和现代 .NET 5 项目中使用它

在原始库中,我使用该类ProtectedData,它是 .NET Framework 的一部分(来自System.Security.Cryptography程序集)。

这不是基本 .NET 标准库的一部分,因此为了使其正常工作,我添加了适当的 NugetPackage System.Security.Cryptography.ProtectedData、.

这样,项目就可以正确编译,但是当我尝试运行它时,出现以下错误:

System.IO.FileNotFoundException:“无法加载文件或程序集“System.Security.Cryptography.ProtectedData,Version=6.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”或其依赖项之一。该系统找不到指定的文件。'

所以我查看了编译输出目录,发现没有System.Security.Cryptography.ProtectedData.DLL文件的踪迹,就像编译系统没有将依赖项复制到输出目录一样。我怎样才能解决这个问题?

Mas*_*r_T 20

在另一个论坛上找到了这个答案,它似乎有效。

我补充道:

<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
Run Code Online (Sandbox Code Playgroud)

到 .csproj 文件,现在依赖项已正确复制。

仍然想要解释为什么需要这样做,因为我以前从未在其他项目中这样做过......