質問

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年:

http://www.diaryofaninja.com/blog/2012/09/13/NET-20-20-20-20-20-mode-asemblies-in-visual-studio-net-45-test-projects

Visual Studio 2012では、スタートアップコードを次のファイルに追加する必要があります。

C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.executionengine86.exe.config
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top