.Net Core 1.1 introduced convenient feature of reference inheritance对于2.0来说似乎是一样的。
虽然通常很高兴让它给我一些问题,或者可能是错误,暂时引用忽略"复制本地"设置为false。
我可以使用PrivateAssets
指令禁用此功能,或者通过直接引用覆盖它,但我不想禁用它,因为我和我的团队喜欢这个功能。此外,由于它是NetCore的默认行为,因此修复"将会非常麻烦。 (并保持"修复")处于巨大的解决方案中。
<UseCommonOutputDirectory>true</UseCommonOutputDirectory>
并不是一个真正的解决方案,因为它会破坏CopyLocal=true
,并且它仍然需要修改每个项目文件,这将很难维护。
基本上我有这个:
CopyLocal = false,无论我在哪里:
这使我能够在不添加大量额外引用的情况下执行此操作:
using A;
using B;
using System;
namespace TransientRefTest
{
class Program
{
static void Main(string[] args)
{
Aclass aa = new Aclass();
Bclass bb = new Bclass();
Console.WriteLine("Hello World!");
}
}
}
但B
仍会被复制到输出目录:
导致输出目录中出现混乱,加载过时的二进制文件时出现令人讨厌的意外(动态加载的插件架构)
这是一个错误还是一个功能?我可以使用瞬态参考来获得CopyLocal = false吗?如果出于任何原因无法实现我想要的东西,是否有一些简单的方法可以在解决方案范围内禁用传递引用?
请记住,由于2016年之前.NET Core问题的发布日期可能与NetCore问题无关。