gpt4 book ai didi

c# - Visual Studio 项目将引用项目中的依赖项复制到输出中

转载 作者:行者123 更新时间:2023-11-30 20:16:26 25 4
gpt4 key购买 nike

是否可以让 Visual Studio 将引用项目的所有依赖项复制到输出路径中?

例子

在解决方案中,Project A(Library,.NET Standard)定义了一些函数并且依赖于Library L1(通过NuGet)和Library L2(本地.dll,引用并复制到项目)

项目 B(控制台应用程序)引用项目 A。

构建 B 时,输出文件夹包含 B 和 A.dll 的所有直接依赖项. L1 和 L2 在输出中不可用。因此,该程序无法正常运行。

如何强制 VS 也将 L1 和 L2 复制到 B 的输出?

到目前为止,我发现的唯一方法是将 A 打包为 NuGet,但这似乎是不必要的开销并且不舒服。我想我只是忘记了其他人似乎都知道的事情......

编辑(清除示例)

我的解决方案包含两个项目。

MongoWrapper 项目

  • .NET Standard 2.0 类库
  • 依赖于 NuGet MongoDB.Driver 包
  • 实际使用了这个依赖(没有僵尸依赖)

项目控制台用户

  • .Net Framework 4.6.1 控制台应用程序
  • 引用 MongoWrapper 项目
  • 实际使用 MongoWrapper

观察

调试 ConsoleUser 时应用程序,它编译并启动。在运行时,当它调用 MongoWrapper 中的方法时它使用 MongoDB.Driver,应用程序崩溃,因为 MongoDB.Driver 依赖项未复制到 ConsoleUser 的输出文件夹中.

如何解决这个问题?

最佳答案

问题是由使用 .Net Standard 库和 .Net Framework 应用程序引入的。

长见识

使用文本编辑器打开.Net Framework 项目的.csproj 文件。在第一个 PropertyGroup 中添加行

<RestoreProjectStyle>PackageReference</RestoreProjectStyle>

保存文件,在 Visual Studio 中重新打开 Solution 并执行 Clean & Build

不同项目文件版本中的依赖

.Net Framework 项目使用旧版本的.csproj 项目文件。引用/依赖项存储在附加的 packages.config 文件中。默认情况下,构建 .Net Framework 项目会使系统在引用的项目中搜索 packages.config 文件。如果找不到这样的文件,构建任务会将引用的项目视为没有依赖项。所以本例中没有添加MongoDB.Driver库。

通过在 .csproj 项目文件中添加建议的行,构建任务会在引用项目的项目文件中搜索依赖项,这些依赖项存储在 .Net 标准项目文件中。

.Net Core 项目默认搜索较新的项目文件结构。

可以在选项 -> NuGet -> 常规 -> 包管理中设置新项目的默认行为

关于c# - Visual Studio 项目将引用项目中的依赖项复制到输出中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49147430/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com