auX*_*auX 3 c# visual-studio visual-studio-2017 .net-standard-2.0
是否可以让 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,但这似乎是不必要的开销和不舒服。我想我只是忘记了一些其他人似乎都知道的事情......
我的解决方案包括两个项目。
调试ConsoleUser应用程序时,它会编译并启动。在运行时,当它调用MongoWrapper使用 MongoDB.Driver的方法时,应用程序崩溃,因为 MongoDB.Driver 依赖项没有复制到ConsoleUser.
如何解决这个问题?
该问题是由 .Net Standard 库和 .Net Framework 应用程序的使用引起的。
.csproj使用文本编辑器打开.Net Framework 项目的文件。在第一个PropertyGroup添加行
<RestoreProjectStyle>PackageReference</RestoreProjectStyle>
Run Code Online (Sandbox Code Playgroud)
保存文件,在 Visual Studio 中重新打开 Solution 并执行 Clean & Build
.Net Framework 项目使用旧版本的.csproj项目文件。引用/依赖项存储在附加packages.config文件中。默认情况下,构建 .Net Framework 项目会使系统packages.config在引用的项目中搜索文件。如果未找到此类文件,则构建任务会将引用的项目视为没有依赖项。因此,在示例中,没有添加 MongoDB.Driver 库。
通过在.csproj项目文件中添加建议的行,构建任务在引用项目的项目文件中搜索依赖项,这些依赖项存储在 .Net Standard 项目文件中。
.Net Core 项目默认搜索较新的项目文件结构。
新项目的默认行为可以在 Options -> NuGet -> General -> Package Management 中设置
| 归档时间: |
|
| 查看次数: |
3659 次 |
| 最近记录: |