2016-06-30 4 views
0

私は、たくさんのファイルを含むウェブサイトを含むソリューションを持っています。Visual Studio DLLを公開するときに、いくつかのクラスが欠けている

最近、サイトに新しいウェブページを追加しなければならなかったことが起こりました。新しいファイルでソリューションを構築すると、すべてが機能します。 Web公開ウィザードを使用しようとすると、プロセスが分割されます。

基本的に、これは何が起こるかです:

  • 新しいページ(例えばマイページ)はVisual Studioでローカルにwebproject
  • ビルドに追加し、すべてがすべての権利です。最終アセンブリには、コードベースに含まれるすべてのクラスが含まれます。
  • Webサイトをファイルシステムに公開する(右クリックしてCSProjectからパブリッシュする)と、プリコンパイルによって "myPage"クラスが存在しないというエラーがスローされます。

は、私は3つのいつもの場所にDLLのバージョンを(例えばmyWebSite.dll)チェックしました:

  • \ binに - >コンパイルされたコードは、 "マイページ" クラスを含め、完全である
  • \ OBJ \ Debug \ Package \ PackageTmp \ bin - >コンパイルされたコードが完全ではなく、新しいクラスが "MyPage"クラスを含むMISSINGです。
  • \ obj \ Debug \ AspnetCompileMerge \ Source \ bin - >コンパイルされたコードは完全ではなく、新しいクラスはMISSING "MyPage"クラスを含む
+1

'obj'フォルダは最終的なバイナリコードを含みません。これは本質的には一時的なフォルダです。公開は 'obj'から何も使用しません。どのようにWebサイトを公開しましたか?どのような設定を使用しましたか?おそらく間違ったフォルダを選択しましたか?どのバージョンのVisual Studioを使用していますか? –

+0

返信いただきありがとうございます。 VSバージョン2010年と2012年、全く違いはありません。ウェブサイトはローカルで公開され、ファイルシステムに公開されます(プロジェクト名を右クリックして公開します)。ローカルフォルダ(c:\ publish)、すべてのファイルを事前に削除して、アプリケーションをプリコンパイルします –

+0

あなたはソリューションをきれいにして再構築しましたか?愚かに聞こえるかもしれませんが、時にはVSはDLLが変更されていてそれを上書きしないことを忘れるでしょう。 – user1666620

答えて

0

溶液を循環参照して、これと同様に設計されている:

MySolution 
    Project A 
    Project B 
    Project C 
    ... 

プロジェクトAプロジェクトAからアセンブリの出力を参照し、プロジェクトBを参照。

ローカルでビルドするとき、Aから生成されたアセンブリがProjectA.dllであり、再生成されたため、すべてが機能しました。ビジュアルスタジオ(Web Publishing、TFSビルドとパブリッシュ機能ではない)から "publish"を使用すると、参照が壊れてしまい、結果として得られるDllに一部の部分が欠落しているように見えます。

この不具合は、参照されている循環アセンブリが最新のものではなく、古いものであったために発生します。

関連する問題