我正在为版本的正确依赖版本控制而苦苦挣扎。我在一些文章中读到,库中对 AssemblyVersion 的每次更改都会导致需要重新构建引用该库的所有程序集。如果这是真的,我在设计依赖程序集的发布周期时需要非常小心,对吧?
我想自己验证论文,然后……好吧,我注意到这根本不是事实。
我制作了一个控制台应用程序,它引用了 dep1.dll(程序集版本 1.0.0.0)并构建了它。然后我将 dep1.dll 更改为 2.0.0.0 版本,构建它并将其与 1.0.0.0 版本交换。运行控制台应用程序时,我预计会出现错误“找不到版本为 1.0.0.0 的程序集 dep1.dll”。你知道吗?没有发生什么特别的事情,该应用程序使用该库,就像它从一开始就针对该版本一样。
ConsoleApp1/Program.cs
using dep1;
using System;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
var a = new Class1();
a.Prop1 = "asdf";
Console.WriteLine(a.Prop1);
}
}
public class Implementation : Interface1
{
public int Super { get => throw new NotImplementedException(); set => throw new NotImplementedException(); }
}
}
dep1/Class1.cs
namespace dep1
{
public class Class1
{
public string Prop1 { get; set; }
}
public interface Interface1
{
int Super { get; set; }
}
}
如您所见,接口也是如此。
你能解释一下为什么我的测试不起作用吗?这一点,其他 SO 答案 ( 1 ) 和 haacked on versioning interfaces的文章真的让我很困惑。