9

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);

そのエラーで壊れます。このエラーを検索しましたが、解決策を見つけることができませんでした。

4

3 に答える 3

31

引き続き .NET 4 をターゲットにする場合は、app.config に次のように追加します。

<configuration>
  <startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0"/>
  </startup>
</configuration>

これにより、古いバージョンのフレームワーク用にビルドされた混合モード アセンブリ (ほとんどの場合、アンマネージ コードとマネージ コードの両方を含む C++/CLI アセンブリ) の読み込みサポートが有効になります。

于 2010-06-08T17:46:04.350 に答える
6

SharpSVNアセンブリは、CLRのバージョン2.0に対して構築された混合アセンブリです。
したがって、CLRバージョン4.0ではロードできません。

プロジェクトのプロパティで、プロジェクトをターゲットの.Net 3.5(またはそれ以前)に変更する必要があります。
.Net 2.0、.Net 3.0、および.Net 3.5はすべてCLRのバージョン2.0を使用するため、これらのバージョンのいずれでも機能します。

于 2010-06-08T17:42:22.003 に答える
1

Julien が述べたように、プロジェクトの app.config または web.config に互換性コードを追加する必要があります。

<configuration>
  <startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0"/>
  </startup>
</configuration>

これはすべて問題ありませんが、Visual Studio 内のテスト ランナー (MSTest など) でこの問題が発生している場合は、実際にはテスト ランナーの構成ファイルにこの変更を加える必要があります。

私はVS 2012でこの非常に問題について投稿を書きました:

http://www.diaryofaninja.com/blog/2012/09/13/net-20-mixed-mode-assemblies-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
于 2012-09-13T04:20:44.103 に答える