sharpsvnおよびc#の問題
-
24-10-2019 - |
質問
sharpsvnを私のC#プロジェクトに追加しようとすると、sharpsvn関連の呼び出しでコンパイルすると、次のエラーが得られます。
Fileloadexceptionは、実行時間のバージョン「V2.0.50727」に対して構築されていないハンドル化された混合モードアセンブリが構築されており、追加の構成情報なしでは4.0ランタイムでロードすることはできません。
私がしたことは、ダウンロードされたsharpsvn zipファイルから参照を追加して追加しました
using SharpSvn;
それが正常に動作することをコンパイルするとき、しかし私が追加するとき:
string targetPath = "https://bobl/svn/ConsoleApplication1";
SvnTarget target;
SvnTarget.TryParse(targetPath, out target);
そのエラーで壊れます。このエラーを検索しましたが、解決策を見つけることに運がありませんでした。
解決
SharpsVNアセンブリは、CLRのバージョン2.0に対して構築された混合アセンブリです。
したがって、CLRバージョン4.0にロードすることはできません。
プロジェクトを変更するには、プロジェクトのプロパティで.NET 3.5(またはそれ以前)をターゲットにする必要があります。
.NET 2.0、.NET 3.0、および.NET 3.5はすべてCLRのバージョン2.0を使用しているため、これらのバージョンのいずれかで機能します。
他のヒント
ターゲットをターゲットにし続ける場合は、app.configにこれを追加します。
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0"/>
</startup>
</configuration>
これにより、古いバージョンのフレームワーク用に構築された混合モードアセンブリ(主に管理されていないコードとマネージコードの両方を含むC ++/CLIアセンブリ)のロードサポートが可能になります。
Julienが言ったように、プロジェクトのapp.configまたはweb.configに互換性コードを追加する必要があります。
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0"/>
</startup>
</configuration>
これはすべてうまくいっていますが、Visual Studio内のテストランナー(MSTESTなど)でこの問題を抱えている場合、実際にこの変更をテストランナーの構成ファイルに変更する必要があります。
私は2012年のこの問題についての投稿を書きました:2012年:
Visual Studio 2012では、スタートアップコードを次のファイルに追加する必要があります。
C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.executionengine86.exe.config