web-dev-qa-db-ja.com

ビルドエラー:System.Runtimeへの参照を追加する必要があります

私はまったく新しいASP.NET MVC 5.1ソリューションを準備しています。私はたくさんのNuGetパッケージを追加してZurb Foundationなどで設定しています。

その一部として、Portable Class Libraryである社内のNuGetパッケージへの参照を追加しましたが、これがビルドサーバーで問題を引き起こしていると思います。

TeamCityはビルドに失敗します。

型 'System.Object'が参照されていないアセンブリで定義されています。アセンブリのSystem.Runtime、バージョン= 4.0.0.0への参照を追加する必要があります。

私はもともとRazor Webページをコンパイルするときに同じまたは類似のエラーに対する修正を追加しました。その修正はweb.configにあります。

<compilation ... >
  <assemblies>
    <add Assembly="System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
  </assemblies>
</compilation>

しかし、問題は未解決です。

184
Luke Puplett

このSystem.Runtime.dllアセンブリへの参照を追加することで問題が解決しました。

C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\Facades\System.Runtime.dll

ただし、その明示的なパスにあるファイルはビルドサーバーには存在しません。

私がPCLとこれらのファサードについての文書を見つけたら、私はより多くの情報をポストバックします。

更新

ええ、インターネット全体のファサードアセンブリについては、ほとんど何もありません。

グーグル:

(Facades OR Facade) Portable Library site:Microsoft.com
116
Luke Puplett

この修正を実装するには、まずデフォルトで次のような既存のweb.configコンパイルセクションを展開します。

<compilation debug="true" targetFramework="4.5"/>

拡張したら、指示に従って、次の新しい構成XMLを追加しました。

  <assemblies>     
    <add Assembly="System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />   
  </assemblies>

最後のweb.configタグは次のようになります。

<compilation debug="true" targetFramework="4.5">
  <assemblies>     
    <add Assembly="System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />   
  </assemblies>
</compilation>
180
Baahubali

受け入れられた答えの中の@ PeterMajeedのコメントは、関連する問題を解決するのに役立ちました。ポータブルライブラリを使用していませんが、TeamCityを実行しているWindows Server 2012の新規インストールで同じビルドエラーが発生します。

Microsoft .NET Framework 4.5.1開発者用パック のインストール( MSのインストールが完了した後で)ビルドツール ).

26
sfuqua

それが私のために働いた唯一の方法です。アセンブリをweb.configに追加します。

<compilation debug="true" targetFramework="4.5">
  <assemblies>     
    <add Assembly="System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />   
  </assemblies>
</compilation>
23
Lorena Pita

私はVS 2015上のいくつかの解決策(MVCではない)で、そして同じワークステーションではなく別のワークステーションでもこの問題を抱えていました。 .NETのバージョンを4.6に変更し、PCLを参照した後にエラーが発生しました。

解決策は簡単です。解決策を閉じて、解決策と同じフォルダ内にある隠れた.vsフォルダを削除します。

他の回答で提案されているように不足している参照を追加することも問題を解決しますが、参照を再度削除した後でもエラーは解決されたままになります。

TeamCityに関しては、私の設定には問題がなかったので、私は言うことができません。ただし、デバッグ作業の一環として必ず作業カタログをリセットしてください。

9
wezzix

ターゲットにしている.NETバージョン用の.NETランタイムとターゲットパックをインストールします。

開発者パックは、これら2つのものをまとめたものですが、今日の時点では4.6バージョンはないようですので、2つの項目を別々にインストールする必要があります。

ダウンロードはここで見つけることができます: http://blogs.msdn.com/b/dotnet/p/dotnet_sdks.aspx#

3
Oenotria

これは古い問題ですが、私たちの継続的インテグレーションサーバーのビルドパイプラインを修正するために今日直面しました。追加中

<Reference Include="System.Runtime" />

私の.csprojファイルに私のための問題を解決しました。

ちょっとしたコンテキスト:興味のあるプロジェクトは、開発マシン上でビルド問題のない、完全な.Netフレームワーク4.6.1プロジェクトです。問題はビルドサーバーでのみ発生しますが、これは制御できませんが、SDKのバージョンの違いなどが原因である可能性があります。

提案された<Referenceを追加することで、Visual Studioで参照の欠落参照の欠落(参照ツリーに追加されたエントリの黄色い三角)という代償で、ビルドエラーを解決しました。 。

これが似たようなシナリオの人々に役立つことを願っています...

3

TeamCityサーバーでエラーが消えるようにするには、Windows 8.0(8.1ではなく)SDKをダウンロードしてインストールする必要がありました。

https://developer.Microsoft.com/ja-jp/windows/downloads/windows-8-sdk

2
Rahbek

Tfs 2013ビルドサーバーで、テストプロジェクトで同じエラーが発生しました。メインWebプロジェクトが.Net 4.5.1上で実行されている状態で。

System RuntimeのnuGetパッケージをインストールし、packages\System.Runtime.4.3.0\ref\net462\System.Runtime.dllから参照を追加しました

それは私のためにそれを解決しました。

2
Bob Lokerse

私はSystem.Runtime.dllをbinプロジェクトに追加しました、そしてそれは働きました:)

1
Abdullah Tahan

この問題は、Web APIプロジェクトといくつかのライブラリプロジェクトを使用したソリューションで発生しました。ライブラリのプロジェクトの1つがビルド時に混乱していて、Unityの属性が "有効な"属性ではないというエラーが発生し、次にSystem.Runtimeを参照する必要があるというエラーが発生しました。

多くの検索、4.5.2 Developer Packの再インストール、そして何も動作していない、私は多分それはちょうどバージョンの不一致だったと思いました。それで私はすべてのプロジェクトの特性を調べました、そして最も基本的なライブラリのうちの1つは4.5を目標としていましたが、他のすべては4.5.2を目標としていました。私はそれを4.5.2もターゲットにするように変更し、エラーはなくなりました。

1

コードベースのマイナーアップデートの後、ASP .NET MVCプロジェクトを実行しようとすると、この問題に直面していました。

コンパイラエラーメッセージ:CS0012:型 'System.Object'は参照されていないアセンブリで定義されています。アセンブリ 'System.Runtime、バージョン= 4.0.0.0、カルチャ=ニュートラル、PublicKeyToken = b03f5f7f11d50a3a'への参照を追加する必要があります。

私たちのプロジェクトはこの問題に遭遇したことが一度もなかったので、私は根本的な原因を見つける前に設定ファイルを変更することに懐疑的でした。エラーログから、私は本当に起こっていたことを指摘したこの詳細なコンパイラ出力を見つけることができました:

警告CS1685 :定義済みタイプ 'System.Runtime.CompilerServices.ExtensionAttribute'がグローバルエイリアスの複数のアセンブリで定義されています。 「c:\ Windows\Microsoft.NET\Framework64\v4.0.30319\mscorlib.dll」の定義を使用

c:¥Users¥Admin¥Software Development¥source-control¥Binaries¥Publish¥WebApp¥Views¥Account¥Index.cshtml(35,20):エラーCS0012:タイプ 'System.Object'は、アセンブリに定義されています。参照されていません。アセンブリ 'System.Runtime、バージョン= 4.0.0.0、カルチャ=ニュートラル、PublicKeyToken = b03f5f7f11d50a3a'への参照を追加する必要があります。

c:\ Windows\Microsoft.NET\Framework64\v4.0.30319 \一時ASP.NETファイル\ meseems.webapp\68e2ea0f\8c5ee951\Assembly\dl3\52ad4dac\84698469_3bb3d401\System.Collections.Immutable.DLL:(シンボル関連の場所前のエラーに)

私たちのプロジェクトに追加された新しいパッケージは、古いバージョンの.NET Frameworkを参照していたため、 "複数アセンブリでの定義"問題(CS1685)が発生し、実行時にかみそりビューコンパイラエラーが発生しました。

互換性のないパッケージ(System.Collections.Immutable.dll)を削除しましたが、問題が発生しなくなりました。しかし、あなたのプロジェクトでパッケージを削除できない場合は、 Baahubali's answer を試す必要があります。

ファイル「C:¥Program Files(x86)¥Reference Assemblies¥Microsoft¥Framework.NETFramework¥v4.5.1¥Facades¥system.runtime.dll」を本番サーバーのbinフォルダーにコピーすると、これで問題が解決します。

0
Tomluke