web-dev-qa-db-ja.com

VSTS 2010 SGEN:エラー:ファイルまたはアセンブリを読み込めませんでした(HRESULTからの例外:0x80131515)

VS2010で奇妙な問題が発生しています。 TFSを使用してAPI dllを作成し、プロジェクトでそれらを参照して、完全に信頼されたマップされたネットワークドライブを使用していました。私たちは少なくとも2年間そのように働いており、すべてが完璧に機能しました。

今日、webappをvs2010に変換し、Releaseでコンパイルすると、次のようになりました:

SGEN:エラー:ファイルまたはアセンブリ 'file:/// L:\ Api\Release API_20100521.1\Release\CS.API.Exceptions.dll'またはその依存関係の1つを読み込めませんでした。操作はサポートされていません。 (HRESULTからの例外:0x80131515)

奇妙なことは、それがデバッグプロファイルの下にあるときに動作しているということです...

追加してみました

<runtime>
   <loadFromRemoteSources enabled="true" />
</runtime>

まだ運がありません( http://social.msdn.Microsoft.com/Forums/en/msbuild/thread/d12f6301-85bf-4b9e-8e34-a06398a60df0 および http://msdn.Microsoft.com/en-us/library/dd409252(VS.100).aspx

参照されているすべてのdllがbinフォルダーにコピーされるため、コードがprodのときにネットワーク共有から実行されないため、この問題はVisual Studioまたはmsbuildからのものであると確信しています。

誰かが解決策(または単に検索パスのアイデア)を持っているなら、私に知らせてください!

編集:シリアル化アセンブリの生成がオフになったため、デバッグモードで動作していたことがわかりました。タイトルが言うように、それはパスが信頼できないと言うのはこのユーティリティであるため、実際にはSGENの問題です...

105
Developer IT

このエラーを修正するには、WindowsエクスプローラーでAssembly DLLを見つけ、右クリックして[プロパティ]を選択し、[ブロック解除]ボタンを押します。DLL =外部ストリームとしてマークしているストリームがあります-ブロック解除をクリックすると、その指定を削除します。

211
Slaggg

ビルドがネットワーク共有からdllを参照しているTFSビルドサーバーで、同じ/同様の問題が発生しました。

問題は、CLR v4セキュリティポリシーモデルが以前のバージョンから変更されており、以前のようにアセンブリをサンドボックス化していないことです。

問題を修正するには、sgen.exeの場所を見つけ、同じフォルダーに次の内容のsgen.exe.configを作成します。

<configuration>
  <runtime>
    <loadFromRemoteSources enabled="true" />
  </runtime>
</configuration>

sgen.exeは通常

"C:\Program Files\Microsoft SDKs\Windows\v[current version]\bin\NETFX 4.0 Tools"

このブログ投稿では、.NET 4.0のCASポリシーに関する変更点のいくつかを読むことができます。 Link

56
Martin Hyldahl

同じ問題があり、設定の変更が機能しませんでした。プロジェクトプロパティで[シリアル化アセンブリの生成]をオフに設定した場合にのみ機能しました。

21
Rob

同じエラーが発生し、DLLが「ブロック」されたことがわかりました。エクスプローラでDLLを開き、右クリック->プロパティ-> [ブロック解除]を押します。

http://cantgrokwontgrok.blogspot.com/2009/10/visual-studio-unknown-build-error.html

6
Nate Zaugg

これとまったく同じ問題があり、C:\ Program Files(x86)\ Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Toolsの下にsgen.exe.configを追加して修正しました

他の人が言ったように、この単純な設定で

<?xml version ="1.0"?>
<configuration>
  <runtime>
    <loadFromRemoteSources enabled="true" />
  </runtime>
</configuration>
3
Matt Watson

TFSビルドサービスの64ビットバージョンを実行している人のために、次のパスに構成ファイルを作成する必要がありました。

 C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\x64

ファイルの内容:

<?xml version ="1.0"?>
<configuration>
<runtime>
    <loadFromRemoteSources enabled="true" />
</runtime>
</configuration>
2
gmasselli

私の場合、以下のスニペットをapp.configファイルに追加するとうまくいきました。 VS2010 Service Pack 1でWindows XPを実行しています。

<configuration>
  <runtime>
    <loadFromRemoteSources enabled="true" />
  </runtime>
</configuration>
1
venetia

私は同じ問題を抱えていて、GACにアセンブリをロードして働いた

1
gabouy

unblockconfigも役に立たなかった。私にとってのトリックは、 caspolに関するこのヒント でした。走った

 %windir%\Microsoft.NET\Framework\v2.0.50727\CasPol.exe -m -ag 1.2 -url file://UncPathName/UncSubPath/* FullTrust

そして、VisualStudioを再起動する必要もありませんでした。

0
Yahoo Serious

私のような場合には、dllファイルのプロパティにUnblockが表示されないため、Unblockは解決策ではありませんでした。探し続け、ソリューションファイルを閉じて、プロジェクトslnファイルへのネットワークUNCパスの代わりにローカルのC:コピーを使用して再度開きました。このルートを行った後に公開できました。

0
Taersious

参考までに、Windows 7を実行している場合、sgen.exeファイルは次の場所にあります。

C:\ Program Files(x86)\ Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools

Sgen.exe.configを作成してそこに配置しなければならなかったので、この問題はなくなりました。

0
ewahner

同様の問題が発生したため、ソリューションのPropertiesフォルダーにあるlicenses.licxファイルを削除することでようやく解決しました。

0
clemchen