我正在努力对发行版进行适当的依赖版本控制。我已经读过一些文章,对库中的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; }
}
}
如您所见,接口也是如此。
能否请您解释为什么我的考试不起作用?这个,其他答案(1)和haacked on versioning interfaces的文章真的让我感到困惑。