2017-01-19 6 views
6

私はいくつかのステートレスサービスと単一のステートフルサービスを含むサービスファブリックアプリケーションに取り組んでいます。私が初めてパブリッシュすると、すべてが問題なく、ローカルクラスタに展開されます。私は明示的にそれを最初に停止せずにアプリをパッケージまたは公開しようとした場合、この後、私は次のエラーを取得する:サービスファブリックコードが自分のPDBをロックするのはなぜですか?

CSC : error CS2012: Cannot open 'C:...\ProjectFolder\obj\x64\Debug\ProjectName.pdb' for writing -- 'The process cannot access the file 'C:...\ProjectFolder\obj\x64\Debug\ProjectName.pdb' because it is being used by another process.'

process explorerによると、PDBは、私自身のProjectName.exeによってロックされています。これは私のアプリケーションでの単一のステートフルなサービスです。

  1. なぜ私のexeは独自のPDBをロックしますか? Visual Studioであれば分かります。
    • これは私自身のコードには何も表示されていないので、これは私が呼び出しているファブリックコードの中にあるものと仮定しています。
  2. PDBはアプリケーションとともに配備されますが、元のソースディレクトリのファイルはロックされています。なぜ、実行中のコードに隣接するPDBではないのですか?
  3. なぜステートフルサービスではなく、ステートレスサービスに関するこのエラーが表示されるのですか?
    • これは、起動時にステートフルサービスが多くのエラーを生成することと関係していると思われます。この場合、Fabricはシンボルを正しく表示する必要があります。
  4. Visual Studioを使用してデバッグしていない限り、正しいPDBを使用するか、まったく使用しないかはどうしたらいいですか?

編集:Raised on github。このためworkaround電流:これが修正されましたように

A current workaround at this point in time would be to restrict the Network Service access to the pdb in the build folder (obj\x64\Debug).

+0

ステートフルサービスのasp.netコアですか?ソリューションにクラスライブラリプロジェクトがありますか? –

+0

私はasp.netコアまたは.netコアを避けました。ファブリックでプラットフォームと構成権を取得するには、あまりにも多くの問題がありました。ファブリックからのダイレクト・デープは64ビットのみのサービスです。ステートフルサービスを含むこれらのうちの1つまたは2つは、任意のCPUで構築されたソリューション内のクラスライブラリを参照します。それは問題を引き起こす可能性がありますか? – Andyrooger

+0

私は、クラスライブラリのビルド構成を変更した後でこれが起こるという問題を見てきました。その場合、セカンダリビルドによって解決されます。あなたはビルドで立ち往生しているのですか、あるいは別のビルドをやってもいいのですか? –

答えて

0

上げたissueに基づいて、それが見えます。

"Going to close the issue as we believe both issues have now been addressed by the 5.6 runtime and the 1.6 tooling."

は、誰もが私は大きな緑色のチェックマークを移動するのは非常に幸せになるだろう1-3に答えることができた場合は、アップグレードが今点4への答えであるようです。

関連する問題