为什么"传递参考" NetCore忽略复制本地?

时间:2018-05-15 13:19:11

标签: c# build .net-core

.Net Core 1.1 introduced convenient feature of reference inheritance对于2.0来说似乎是一样的。

虽然通常很高兴让它给我一些问题,或者可能是错误,暂时引用忽略"复制本地"设置为false。

我可以使用PrivateAssets指令禁用此功能,或者通过直接引用覆盖它,但我不想禁用它,因为我和我的团队喜欢这个功能。此外,由于它是NetCore的默认行为,因此修复"将会非常麻烦。 (并保持"修复")处于巨大的解决方案中。

<UseCommonOutputDirectory>true</UseCommonOutputDirectory>并不是一个真正的解决方案,因为它会破坏CopyLocal=true,并且它仍然需要修改每个项目文件,这将很难维护。

基本上我有这个:

solution

CopyLocal = false,无论我在哪里:

enter image description here

这使我能够在不添加大量额外引用的情况下执行此操作:

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仍会被复制到输出目录:

enter image description here

导致输出目录中出现混乱,加载过时的二进制文件时出现令人讨厌的意外(动态加载的插件架构)

这是一个错误还是一个功能?我可以使用瞬态参考来获得CopyLocal = false吗?如果出于任何原因无法实现我想要的东西,是否有一些简单的方法可以在解决方案范围内禁用传递引用?

请记住,由于2016年之前.NET Core问题的发布日期可能与NetCore问题无关。

0 个答案:

没有答案