2010-07-08 92 views
1

每當我通過一鍵發佈功能在VS 2010中發佈我的MVC Web應用程序(我沒有做任何web.config轉換或任何幻想 - 但!)。下一次我來構建應用程序時,出現以下錯誤:從VS 2010發佈Web應用程序後的問題

在應用程序級別之外使用註冊爲allowDefinition ='MachineToApplication' 的段是錯誤的。此錯誤可能是由於配置爲IIS中的應用程序的虛擬目錄不是 。在... MyWebApp \ obj \ release \ package \ packagetmp \ web.config

web.config文件的新副本確實是由VS2010創建的... MyWebApp \ obj \ folder所以我刪除了整個OBJ文件夾,然後我能夠再次建立。

但我不應該每次發佈時都這樣做 - 我必須有一些配置不正確 - 任何人都可以幫忙。

謝謝。

回答

0

我剛剛發現這個已經爲我工作周圍的工作,打開的.csproj爲您的Web項目,並更改項目\的PropertyGroup節點下這個節點:

從這個: <MvcBuildViews>真正</MvcBuildViews >

這樣: <MvcBuildViews>假</MvcBuildViews >

這對我有效,希望它也能爲你工作。

+2

請注意,雖然這確實解決了這個問題,但這意味着您不再需要對視圖進行編譯時驗證 - 對我來說這是一個交易斷路器。 – 2010-10-18 10:20:58

1

這不幸是一個將Web應用程序發佈到文件系統的已知問題。這仍然影響Visual Studio 2010的發佈版本(RTM)。它不僅限於Beta或RC版本。

這個問題「位」我也,我也必須手動刪除我的網站解決方案文件夾obj文件夾中的DebugRelease文件夾。

一個自動化的「解決辦法」真正的答案可以在this answer可以找到其他堆棧溢出問題:

Why do I randomly get a 「error to use section registered as allowDefinition='MachineToApplication'」 when building an MVC project?

簡而言之,你需要從刪除web.config文件要麼DebugRelease文件夾(或兩者),而這與構建前命令(在Project Properties頁你的解決方案的Build Events選項卡中配置)來實現的:

del "$(ProjectDir)\obj\Debug\Package\PackageTmp\web.config" 
del "$(ProjectDir)\obj\Release\Package\PackageTmp\web.config" 

個人而言,我刪除了整個obj文件夾,因爲所有這些文件都是用每個版本重新創建的。