2011-10-24 7 views
1

これはタイトルを辿るのが難しい概念なので、それが完全にアイデアを捉えなければ私を許してください。ビルド時にVisual StudioライブラリプロジェクトをDLLをWebプロジェクトに「プッシュ」しないようにするにはどうすればよいですか?

おそらく、私は狂ったが、私はちょうどこの行動に気づいた:

  1. のVisual Studioソリューション
  2. を作成DLLライブラリプロジェクト(私はC#のを使用して...動作は同じであるかどうかを知りませんを作成します。別の言語固有のDLLプロジェクトを使用して)。
  3. 新しいウェブクライアントからライブラリ
  4. からウェブクライアントB(私はASP.NETプロジェクトを使用)
  5. 参考にライブラリを作成し、ウェブクライアントA(私はMVC 3プロジェクトを使用)
  6. リファレンスを作成します。新しいWebクライアントB
  7. (タイムスタンプの差は明らかであろうように、少なくとも分)ソリューションをビルドし
  8. 開き、2つのWindows Explorerのウィンドウビットを待っ:WebクライアントAのビンに1つずつをWebクライアントBのビンに移動します。クライアントプロジェクトとライブラリプロジェクトのネイバー(プロジェクト参照用の「ローカルコピー」は普遍的なデフォルトであると仮定します)
  9. ビルドライブラリプロジェクトだけです。私のシステムで

は、ライブラリのDLLはを押す(または相互引か)クライアントのbinフォルダにあるように思われます。これは、ステップ8で待っていれば、タイムスタンプの差によって明らかになるはずです。もう一度、おそらく私は狂っていますが、私はこのシナリオを前に行ったことがあり、

私はこの種の配置のソリューションで作業していて、ソリューション全体を構築するのではなく、個別に2つのWebアプリケーションを構築していたため、問題が発生しました。 WebアプリケーションAをビルドするとうまくいきましたが、WebアプリケーションBは "FileNotFoundException:ファイルまたはアセンブリを読み込めませんでした"というエラーが表示されます。そして、その逆も同様です。

の質問にそう:

はこの正常な動作です(どちらか私はクレイジーだかの前に、このシナリオであることについて間違っていますか)?

通常でない場合、クライアントDLLのビルド時にライブラリDLLがクライアントに入るように設定することはできますか?

+0

これは奇妙です。 dllをビルドする場合、それはソリューションのbinフォルダーにのみビルドする必要があります。どのようにそれをプッシュするかを知っていますか?多分あなたのビルドに何かがありますか?あなたはそれをコピーするためにポストビルド操作を追加する人はいないでしょうか? – gbianchi

+0

@gbianchi - 既存のソリューションがロードされていない上記の手順を実行すると、この現象が発生します。つまり、ビルド後のアクションなどは絶対にありません。私のマシンでは、デフォルトの動作... "default"しかありません。 –

+0

暗闇の中で撮影:これはReSharperが行うことができますいくつかのintellisenseの必要性のためにこれを行う? –

答えて

1

クラスライブラリへの参照のコピーローカル設定を確認してください。

編集

はちょうどチェックし、同じことが私のマシン上で起こります。 これはデフォルトの動作だと思います。それについて考えると、クラスライブラリを再構築して、そのプロジェクトをビルドせずに参照プロジェクトで使用することができます。

+0

私は上記のステップ9に言及します。私はこれがGACにDLLを持たせるのではなく、 "bin deployment"を許可した設定だと思っていました。確かに、 "Copy local"をオフにすると、ライブラリDLLがクライアントビンにコピーされていることがわかります。 –

+0

"ローカルコピー"設定はここでは無関係であることを確認しました。クライアントプロジェクトのためにオフにしても、ライブラリがビルドされるとき、新しいライブラリDLLは依然としてクライアントのbinフォルダに表示されます。 –

+0

さて、それは私だけではないと思うのは幾分慰めになると思います。そして、なぜ私は最初のアセンブリの読み込み/バインディングの問題があるのか​​理解しています...私が取り組んでいた "本当の"解決策のライブラリは強く名前のついたライブラリなので、バージョンが自動インクリメントされたために窒息していました。 –

関連する問題