2010-01-27 14 views
15

Tôi đã thấy một vài câu hỏi về SO về một lỗi tương tự khi triển khai một trang web, nhưng tôi dường như ngẫu nhiên nhận được lỗi này khi xây dựng một trang web ASP.NET MVC trong Visual Studio. Thực hiện một sạch sẽ thường sửa chữa nó, nhưng có cách nào để tránh điều này hoàn toàn?Tại sao tôi ngẫu nhiên nhận được một "lỗi để sử dụng phần đăng ký như allowDefinition = 'MachineToApplication'" khi xây dựng một dự án MVC?

Đó là lỗi khi sử dụng mục được đăng ký là allowDefinition = 'MachineToApplication' ngoài cấp ứng dụng. Lỗi này có thể được gây ra bởi một thư mục ảo không được cấu hình như một ứng dụng trong IIS. d: ... \ obj \ debug \ gói \ packagetmp \ web.config

Lưu ý rằng nó được phàn nàn về gốc web.config, không phải là một từ Views thư mục con.

+0

Cùng một vấn đề được nhiều kinh nghiệm ở đây, tôi đang sử dụng VS2010 RC1 trên Windows 7 ASP.NET MVC 1.0 – CmdrTallen

+0

tôi có kinh nghiệm nó trên VS2010 Beta 2 và RC trên Windows 7 với ASP.NET MVC 2 – Jedidja

+0

Điều này hoàn toàn giống với VS2010 Express - phiên bản được phát hành, lãng phí thời gian của tôi. – ilivewithian

Trả lời

15

Tôi giả sử bạn đang sử dụng tính năng xuất bản. Tôi nhận được lỗi này khi sử dụng xuất bản vào thư mục tệp.

Xuất bản ứng dụng của bạn tạo bản sao tạm thời của ứng dụng trong thư mục \obj\debug\package\packagetmp\web.config.

Web.config đó gây nhầm lẫn cho IDE nghĩ rằng đó là một ứng dụng, nhưng nó không nằm trong thư mục ảo để bạn gặp lỗi.

Cách giải quyết:

Đó là một cách giải quyết đơn giản để thêm video này vào pre-build lệnh:

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

cách giải quyết Không:

  • Thay đổi thư mục cho ' Vị trí mà gói sẽ được tạo 'dưới' cài đặt Gói/Xuất bản Web 'dường như không để có hiệu lực - ngay cả khi bạn trở nên thông minh và cố gắng đặt nó bên ngoài gốc dự án với ......

  • Tạo thư mục ảo thực trong IIS cho 'PackageTmp' cũng không khắc phục được!

CONNECT CẤP:

http://connect.microsoft.com/VisualStudio/feedback/details/503254/web-config-in-package-folder-makes-it-impossible-to-compile-debug

Tôi hy vọng họ sửa lỗi này trong RC!

+2

Nó không phải là cố định trong xây dựng cuối cùng của Visual Studio 2010. Tôi nhận được lỗi này, quá. –

+0

Tôi chạy vào điều này, và điển hình của Microsoft, đóng vấn đề kết nối là "Không thể tái sản xuất". #fail – mxmissile

+0

Cập nhật không đóng CONNECT ISSUE: https://connect.microsoft.com/VisualStudio/feedback/details/556312/ – mxmissile

9

tôi đã không thể có được những cách giải quyết khác để làm việc, nhưng sự kiện xây dựng trước sau dường như làm việc cho tôi:

rmdir /s /q "$(ProjectDir)obj\Debug\Package" 
rmdir /s /q "$(ProjectDir)obj\Debug\TransformWebConfig" 
rmdir /s /q "$(ProjectDir)obj\Release\Package" 
rmdir /s /q "$(ProjectDir)obj\Release\TransformWebConfig" 
+0

Có vẻ như quá mức nhưng nó hoạt động cho tôi, cảm ơn! (VS2010 RTM, sử dụng xuất bản) – Dunc

+0

Dường như cũng làm việc cho tôi. Cám ơn vì đã chia sẻ! –

2

tôi answered một câu hỏi tương tự gần đây, và điều này có vẻ như nó có thể liên quan .

Để tóm tắt, tôi đã thực hiện điều này trong một trong các dự án MVC của chúng tôi và đó là do có thuộc tính MvcBuildViews trong tệp dự án được đặt thành true. Đặt thuộc tính thành false khắc phục sự cố.

<MvcBuildViews>false</MvcBuildViews> 

Tôi cũng tìm thấy this answer để chỉ ra phương án thay thế không yêu cầu tắt chế độ xem.

+0

Tôi gặp sự cố này trong Visual Studio 11 Beta. Cảm ơn – Panos

+0

cũng trong VS 2012 RTW –

0

Bạn có thể an toàn đặt mục tiêu này ở cuối tệp .csproj và để MvcBuildViews thành true.

Nó xóa thư mục obj trước khi bắt đầu xây dựng ...

<Target Name="BeforeBuild"> 
    <!-- Remove obj folder --> 
    <RemoveDir Directories="$(BaseIntermediateOutputPath)" /> 
    </Target> 
Các vấn đề liên quan