1

I understand that references are stored in the project (vbproj) file for ASP.NET web applications and the Web.Config (http://msdn.microsoft.com/en-us/library/37e2zyhb%28v=vs.71%29.aspx) for websites.

I have recently converted a website into a web application. I notice now that the web application will publish (using the Publish option) even if the version information is incorrect in the Web.Config, then when accessing the web application through a browser I get an error.

I was unable to Publish a website if the version of an assembly in the Web.Config was incorrect.

I read that web applications are precompiled (before publish) whereas websites are compiled the first time the website is accessed through a browser.

Therefore, I believe what I have said should be the other way around i.e. I should be able to publish websites with an incorrect version in the Web.Config (because they are not compiled) and I should not be able to publish a web application.

What am I missing?

4

1 に答える 1

0

さらに調査した後。ASP.NET Web アプリケーションは MSBuild を使用して構築され、ASP.NET Web サイトは ASPnet_Compiler を使用して構築されていることがわかりました。ASPnet_Compiler は、ビルド時に参照アセンブリ (アセンブリ タグを追加) を Web.Config で検索しますが、MSBuild はビルド時にプロジェクト ファイル (vbproj) を検索します。

Web アプリケーションは、vbproj なしで展開されます。プロジェクトファイルはリンクに使用されていると思います。したがって、実行時に Web アプリケーションは Web.Config 内の情報を使用して、ローカルの bin フォルダーで検索するアセンブリを識別し、次に GAC (aspx ページのみ) を識別します。つまり、namespace をコード ビハインド部分クラスに手動でインポートする必要があります。

誰かがコメントまたはより良い答えを持っている場合は、投稿してください。

于 2013-03-12T12:41:01.333 に答える