Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当混合使用.Net标准和.Net Framework时,如何自动部署隐藏NuGet依赖项的C#DLL?_C#_.net_Nuget - Fatal编程技术网

当混合使用.Net标准和.Net Framework时,如何自动部署隐藏NuGet依赖项的C#DLL?

当混合使用.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

我有一个Visual Studio(2017)C#解决方案,其结构如下:

  • 解决方案
    • ExeProject
    • DLL项目
      • NuGet对
        无状态
        包的依赖关系(“无状态”是包的名称)
DLLProject在其接口中隐藏了依赖关系,即
无状态
库的使用应该是
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吗?如果全部在同一个解决方案中,则应“正常工作”。@mxlproject
DLLProject
在.Net Framework不可用的环境中额外使用,因此,不幸的是,不。我的Exe项目针对的是.Net Framework(它专门针对桌面),而DLL针对的是.Net标准。我更新了问题以包含该细节。有没有机会让它在这种情况下自动工作?更新了答案。