编程语言
首页 > 编程语言> > c# – 如何防止.NET 4.7.1库将facade dll复制到bin文件夹?

c# – 如何防止.NET 4.7.1库将facade dll复制到bin文件夹?

作者:互联网

我确定这里可能发生了很多我不太了解的事情,所以请原谅我这是一个愚蠢的问题,还是有明显的细节缺失.

我有一个Visual Studio 2015解决方案,我已经从.NET 4.5.1升级到.NET 4.7.1.该解决方案包括一个网站(而不是Web应用程序)项目和几个库.这些库实际上没有任何依赖关系(彼此除外),并且当它们以.NET 4.7.1为目标时,它们不使用,需要或引用.NETStandard.Library.

当我特别编译其中一个库时,它会将一堆.NET 4.7.1门户dll复制到网站bin文件夹中.不幸的是,该网站是一个Kentico 11应用程序,它不断尝试加载System.IO.Compression.ZipFile外观,并扼杀它,因为它是一个参考程序集,而不是一个真正的程序集.

如果我删除.dll,一切运行正常…但我不想每次都删除它或添加一个post-build事件来删除它.那太傻了.

任何人都可以帮助我了解这里发生了什么,以及如何清理它?

解决方法:

Kentico 11只能瞄准.NET 4.7,所以为了完全支持你的.NET 4.7.1库我相信它正在复制那些额外的外观DLL.这基于.NET 4.7.1发布公告,特别是本节:

BCL – .NET Standard 2.0 Support

.NET Framework 4.7.1 has built-in support for .NET Standard 2.0. .NET Framework 4.7.1 adds about 200 missing APIs that were part of .NET Standard 2.0 but not actually implemented by .NET Framework 4.6.1, 4.6.2 or 4.7. You can refer to details on .NET Standard on .NET Standard Microsoft docs.

Applications that target .NET Framework 4.6.1 through 4.7 must deploy additional .NET Standard 2.0 support files in order to consume .NET Standard 2.0 libraries. This situation occurred because the .NET Standard 2.0 spec was finalized after .NET Framework 4.6.1 was released. .NET Framework 4.7.1 is the first .NET Framework release after .NET Standard 2.0, enabling us to provide comprehensive .NET Standard 2.0 support.

https://blogs.msdn.microsoft.com/dotnet/2017/10/17/announcing-the-net-framework-4-7-1/

引用我的结论:
https://github.com/Particular/NServiceBus/issues/5047#issuecomment-339096350

更新:

我无法在Visual Studio 2017版本15.6.2中重现您的问题.

我安装了针对.NET 4.7的Kentico 11网站项目.然后我创建了一个针对.NET 4.7.1的库项目.我在项目中添加了一些虚拟代码,以利用Sysetem.IO.Compression和System.Net.Http命名空间.我从Kentico添加了对该项目的引用并运行了一个版本.没有外观DLL复制到bin文件夹.

这篇文章表明该问题已在Visual Studio 15.6 https://github.com/dotnet/sdk/issues/1647#issuecomment-364999962版中得到修复

标签:c,net,dll,kentico,net-4-7-1
来源: https://codeday.me/bug/20190622/1262760.html