32

Windows 8 上の Visual Studio 2012 で Windows フォーム アプリケーションを作成しました。対象の .NET Framework は 4.5 で、Windows SDK の Datagramsocket ライブラリを使用したいので、コンパイル時に対象の OS バージョンを 8 に変更しました。

次のエラーが表示されます。

「エラー 1 タイプ 'System.IDisposable' は、参照されていないアセンブリで定義されています。アセンブリ 'System.Runtime、Version=4.0.0.0、Culture=neutral、PublicKeyToken=b03f5f7f11d50a3a' への参照を追加する必要があります。」

4

9 に答える 9

19

4.5.2 と Unity でこの問題が発生した場合、Microsoft は修正プログラムを発行しました。KB 記事: http://support.microsoft.com/kb/2971005

于 2015-01-08T23:28:37.167 に答える
2

Windows 10、TeamCity、および VS2015 でこの問題に遭遇しました。

症状:

Visual Studio はプロジェクトを正常にビルドしますが、TeamCity はコンパイルの問題で苦労しています。

理由:

新しいプロジェクトを既存のソリューションに追加しました - TargetRuntimeVersion を変更するのを忘れていました。

解決:

プロジェクトのアンロード

そのプロジェクトの .csproj ファイルを編集します

変化する:

<TargetFrameworkVersion>v4.5.1</TargetFrameworkVersion>

他のプロジェクトが何であれ、サーバーにインストールされているものは何でも。

私にとっては:

<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>

これが他の誰かがこれを経験しているのに役立つことを願っています.

于 2016-11-03T14:48:16.643 に答える
1

アプリがバージョン 4.0 を読み込もうとしているようですSystem.Runtimeが、そのバージョンがインストールされていないようです。.NET 4.5 がインストールされていると言うので、実行時にアセンブリ バインディングをリダイレクトするための構成を提供できます。

App.configこれをまたはWeb.configファイルに追加してみてください:

<runtime>
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <dependentAssembly>
      <assemblyIdentity name="System.Runtime" publicKeyToken="b03f5f7f11d50a3a" />
      <bindingRedirect oldVersion="4.0.0.0" newVersion="4.5.0.0" />
    </dependentAssembly>
  </assemblyBinding>
</runtime>

この正確なシナリオをテストしたことはありませんが、この構成は同様の状況で役に立ちました。

于 2012-10-15T12:50:09.983 に答える
1

TFS ビルド エージェントを使用しているときに、以下のエラーが表示され続けましたが、4.5.2 がインストールされた Windows 2012 R2 サーバーでのみ発生しました。Visual Studio マシンでコンパイル エラーが発生したことはありません。

「エラー 1 タイプ 'System.IDisposable' は、参照されていないアセンブリで定義されています。アセンブリ 'System.Runtime、Version=4.0.0.0、Culture=neutral、PublicKeyToken=b03f5f7f11d50a3a' への参照を追加する必要があります。」

他の人が指摘した原因は、ポータブル クラス ライブラリに関係しており、他の人が指摘したように。しかし、解決策については、他のマシンではパスとバージョンが異なる可能性があるため、System.Runtime.dllファサードへの参照を推奨する人もいます。%ProgramFiles(x86)%\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\Facades\System.Runtime.dll

私が見つけた最善の解決策は、ビルド マシンにWindows SDKをインストールすることでした。

ここの投稿からこの解決策を見つけ、この問題がここで発生する理由についての非常に明確な説明を見つけました

于 2015-02-05T21:08:39.933 に答える
1

Unity 4.0.1 を .NET Framework 4.6.1 を対象とするプロジェクトに追加した後、TeamCity でこのエラー メッセージが表示されました。C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework の見つからないフォルダーを開発マシンからビルド サーバーにコピーすることになりました。どちらも Windows 7 を実行しています。その後、ビルドは成功しました。

ここに画像の説明を入力

于 2016-08-10T15:00:56.177 に答える
0

Josh が言及しているように、私は Web API プロジェクトといくつかのライブラリ プロジェクトを使用したソリューションでこの問題を抱えていました。ライブラリ プロジェクトの 1 つがビルド時に失敗し、Unity 属性が「有効な」属性ではないというエラーが発生し、次に 1 つの言われたエラーのThe type 'System.Attribute' is defined in an assembly that is not referenced. You must add a reference to assembly System.Runtime.

提案された「更新された」4.5.2 Developer Pack は、私が既にインストールしていたものなので、役に立ちませんでした。直感的には、バージョンの不一致である可能性があると思いました。そのため、すべてのプロジェクトのプロパティを調べたところ、非常に基本的なライブラリの 1 つが 4.5 をターゲットにしており、他のすべてのライブラリは 4.5.2 をターゲットにしていました。それを 4.5.2 もターゲットにするように変更したところ、エラーはなくなりました。

于 2015-09-18T21:30:27.733 に答える