当混合使用.Net标准和.Net Framework时,如何自动部署隐藏NuGet依赖项的C#DLL?
我有一个Visual Studio(2017)C#解决方案,其结构如下:当混合使用.Net标准和.Net Framework时,如何自动部署隐藏NuGet依赖项的C#DLL?,c#,.net,nuget,C#,.net,Nuget,我有一个Visual Studio(2017)C#解决方案,其结构如下: 解决方案 ExeProject DLL项目 NuGet对无状态包的依赖关系(“无状态”是包的名称) DLLProject在其接口中隐藏了依赖关系,即无状态库的使用应该是DLLProject的一个实现细节 ExeProject仅访问DLLProject的公共接口和工厂 由于超出此问题范围的原因,ExeProject的目标是.Net Framework 4.6.1,而DLLProject的目标是.Net Stand
- 解决方案
- ExeProject
- DLL项目
- NuGet对
包的依赖关系(“无状态”是包的名称)无状态
- NuGet对
无状态
库的使用应该是DLLProject
的一个实现细节
ExeProject
仅访问DLLProject
的公共接口和工厂
由于超出此问题范围的原因,ExeProject
的目标是.Net Framework 4.6.1
,而DLLProject
的目标是.Net Standard 2.0
这可以很好地编译,但在调试时,可执行文件找不到无状态.dll
当链接到
DLLProject
时,是否可以自动部署该DLL,而无需向ExeProject
添加无状态的NuGet依赖项?在.NET Core中,此可传递的NuGet依赖项自动工作
在.NET Framework上,对于引用的库有一个“复制本地”选项。确保对有问题的设置为True
更新
对于您的.NET Framework应用程序和.NET标准库,安装程序需要手动修改.NET Framework应用程序的.csproj文件。请注意:
为什么要避免添加nuget依赖项?这正是它们的设计目的。@BradleyUffner可维护性、兼容性、可测试性、接口隔离等。我希望能够在不修改ExeProject
的情况下更改/关闭/删除有问题的库。在我提供的最简单的示例中,这并不是很重要,但是手头的实际任务有多个这样的问题。您能将DLLProject.NETFramework设置为4.6.1吗?如果全部在同一个解决方案中,则应“正常工作”。@mxlprojectDLLProject
在.Net Framework不可用的环境中额外使用,因此,不幸的是,不。我的Exe项目针对的是.Net Framework(它专门针对桌面),而DLL针对的是.Net标准。我更新了问题以包含该细节。有没有机会让它在这种情况下自动工作?更新了答案。