v3.9.43 から nuGet 経由で ServiceStack v3.9.70 にアップグレードした後、ServiceStackServiceStack.Interfaces.dll
を使用するクラス ライブラリに依存するプロジェクトに がコピーされなくなったことに気付きました。これにより、次のエラーが発生します。
System.IO.FileNotFoundException: Could not load file or assembly 'ServiceStack.Interfaces, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.
File name: 'ServiceStack.Interfaces, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'
他のすべての ServiceStack dll がコピーされ、ServiceStack.Interfaces のみが欠落しています。すべての参照は に設定されてCopy Local = True
おり、このStackOverflow の投稿の提案では問題は解決しません。
バージョンが1.0.0.0ServiceStack.Interfaces.dll
の唯一のものであり、他のすべては3.9.70.0に設定されていることに気付きました。これが原因でしょうか?
私のクラスライブラリを参照するすべてのプロジェクトで、カスケードで ServiceStack.Interfaces.dll を手動で参照せずに修正する方法を知っている人はいますか?
更新 - 2014-03-06
v3.9.71.0 にはまだ問題があります。ServiceStack.Interfaces
これは、アセンブリのバージョンが 1.0.0.0 ではなく 1.0.0.0 のままになっているという事実に関連しています。
ServiceStack の github リポジトリのクローンを作成し、build\build.proj
ファイル内のこの行を変更して実行しましたbuild\build.bat
。
<!-- Exclude versioning future strong-named libs -->
<RegexTransform Include="$(BuildSolutionDir)/src/**/AssemblyInfo.cs"
Exclude="$(SrcDir)/ServiceStack.Interfaces*/Properties/AssemblyInfo.cs">
<Find>\d+\.\d+\.\d+\.\d+</Find>
<ReplaceWith>$(Version)</ReplaceWith>
</RegexTransform>
このために(削除された除外に気づきました)
<RegexTransform Include="$(BuildSolutionDir)/src/**/AssemblyInfo.cs">
<Find>\d+\.\d+\.\d+\.\d+</Find>
<ReplaceWith>$(Version)</ReplaceWith>
</RegexTransform>
結果: 正しく動作するようになりました。つまり、ファイルServiceStack.Interfaces.dll
は、 を参照するプロジェクトを参照するプロジェクトにコピーされますServiceStack
。
誰かが私にこれを説明できますか? インターフェイスをバージョン管理から除外する理由は何ですか?