リリースの適切な依存関係のバージョン管理に苦労しています。ライブラリ内の 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 の記事は、私を本当に混乱させました。