是否可以使Visual Studio将引用项目的所有依赖项复制到输出路径中?
在解决方案中,项目A(库,.NET标准)定义了一些功能,并且依赖于库L1(通过NuGet)和库L2(本地.dll
,引用并复制到项目)
项目B(控制台应用程序)引用项目A。
构建B时,输出文件夹包含B和的所有直接依赖项A.dll
。L1和L2在输出中不可用。因此,该程序无法正常运行。
如何强制VS将L1和L2也复制到B的输出?
到目前为止,我发现的唯一方法是将A打包为NuGet,但这似乎是不必要的开销且不舒服。我想我只是忘记了其他人似乎都知道的东西。
我的解决方案包括两个项目。
在调试ConsoleUser
应用程序时,它将编译并启动。在运行时,当它调用MongoWrapper
其中使用MongoDB.Driver的方法时,应用程序崩溃,因为未将MongoDB.Driver依赖项复制到的输出文件夹中ConsoleUser
。
如何解决这个问题?
通过使用.Net标准库和.Net Framework应用程序引入了此问题。
.csproj
使用文本编辑器打开.Net Framework项目的文件。在第一PropertyGroup
行内添加行
<RestoreProjectStyle>PackageReference</RestoreProjectStyle>
保存文件,在Visual Studio中重新打开解决方案并执行“清理和构建”
.Net Framework项目使用.csproj
项目文件的旧版本。引用/依赖项存储在附加packages.config
文件中。默认情况下,构建.Net Framework项目会使系统packages.config
在引用的项目中搜索文件。如果找不到这样的文件,则构建任务会将引用的项目视为没有依赖项。因此,在示例中,未添加MongoDB.Driver库。
通过在.csproj
项目文件中添加建议的行,构建任务将在引用的项目的项目文件中搜索依赖项,并将其存储在.Net Standard项目文件中。
默认情况下,.Net Core项目搜索较新的项目文件结构。
可以在选项-> NuGet->常规->程序包管理中设置新项目的默认行为。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句