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


106

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

今日、私はウェブアプリをvs2010に変換し、それをリリースでコンパイルすると、次のようになります。

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

奇妙なことに、Debugプロファイルの下にあるときに機能している...

追加してみました

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

app.configに入れてもうまくいかない(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フォルダーにコピーされるため、本番環境ではコードがネットワーク共有から実行されないため、この問題はビジュアルスタジオまたはmsbuildにあると確信しています。

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

編集:シリアル化アセンブリの生成がオフにされたため、デバッグモードで動作していたことが判明しました。タイトルが言っているように、パスが信頼されていないというのはこのユーティリティだからです。

回答:


213

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


働いていた...開発者だけが、この問題を持っている...右TFS ...奇妙なから
spaghetticowboy

ロックされた理由は、私のソースコードが共有に置かれたためです。コードをローカルディスクに移動しました-すべて正常に動作しました。(共有の問題に対する.NET4 SGEN権限)。
thedrs

31
神のお恵みがありますように。真剣に。
FAtBalloon 2012年

ほとんどの企業では、ローカル管理者のアクセスを許可していないか、開発者を含む一般ユーザーの[ブロックを解除]ボタンへのアクセスを明示的に無効にしています。
kevinarpe

2
zipファイルからコピーしたDLLでこの問題が発生しました。
79IT 2013年

59

ビルドがネットワーク共有から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ポリシーに関するいくつかの変更点については、次のブログ記事をご覧ください。リンク


1
ええ、私は、このソリューションに出くわしたが、私にとっては無用だったシリアル化アセンブリがオフになって、私は何も変わっていなかった...我々は解決
開発者向けIT

7
他の情報については、SGENは通常「C:\ Program Files \ Microsoft SDKs \ Windows \ v7.0A \ bin \ NETFX 4.0 Tools」にあります
Steve Cooper

開発者IT:私の場合、シリアル化アセンブリの生成が必要なため、生成をオフにすることができませんでした。しかし、当然のことながら、シリアライゼーションアセンブリのターニングも解決策となります。
Martin Hyldahl、

1
64ビットマシンの場合、... \ Bin \ NETFX 4.0 Tools \ x64 \
Vivek Ayer

1
VS2015の場合は、C:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v10.0A \ bin \ NETFX 4.6 Tools
Farshid

23

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


私のためにも働いた。これは、質問内で編集されたコメントに基づくOPの正解で​​もあります。
akousmata 2014年

私のために働いた。Tks。
ViniciusGonçalves、

1
プロジェクトのプロパティ->ビルド->シリアル化アセンブリの生成は自動でした。オフに設定すると、コンパイルが魅力的に機能し始めました。+1とありがとう。
Honza P.

それは私の場合にもうまくいきました。とにかく、リリース構成ではデフォルトでオンになっているので、オフにするとはどういう意味かと思います。本番環境で公開するときに、アプリケーションに副作用がないことを確認したいと思います。
アシモフ

この問題が発生したプロジェクトは1つだけでした-AutoからOffに変更しました-このプロジェクトはSOAP WSを参照していました。
Subha


3

私はこれとまったく同じ問題を抱えており、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>

2

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>

1

同じ問題があり、GACにアセンブリをロードして作業しました


事は私達がGACにそれらを望まないことです。シリアル化アセンブリがオフになったときに解決しました
開発者IT

1

以下のスニペットをapp.configファイルに追加すると、私の場合はうまくいきました。VS2010サービスパック1を適用したWindows XPを実行しています。

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

0

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

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

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


0

どちらunblockconfig私のために働いていません。私にとってのトリックは、このヒントcaspolでした。私は走った

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

そして、準備が整いました。VisualStudioの再起動も必要ありませんでした。


0

同様の問題が発生し、ついにソリューションのプロパティフォルダーにあるlicenses.licxファイルを削除して問題を解決しました。


0

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


0

私の場合、dllの束がブロックされました。

フォルダー内のすべてのファイルのブロックを解除するには、次のコマンドでPower Shellを使用しました

dir -Path [directory path] -Recurse | Unblock-File
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.