nềnLỗi CS0433 trong lớn precompiled Dự án Asp.net website
Tôi đã thực hiện trên một dự án trang web asp.net rất lớn. Quá trình triển khai cũ là sao chép các tệp .cs, .aspx, và .ascx vào IIS và để nó xây dựng trên bay. Tôi muốn biên dịch trước nó và sử dụng TeamCity để tự động triển khai nó. Tôi đã làm điều này với một số dự án trang web khác.
Dự án có khoảng 350 điều khiển người dùng được sắp xếp độc đáo trong các thư mục nhưng được sử dụng khắp nơi. Các điều khiển được tham chiếu từ các thư mục khác, từ các thư mục khác ... Về cơ bản là một cơn ác mộng tham chiếu tập tin tròn.
Nỗ lực của tôi
nỗ lực đầu tiên của tôi là xây dựng nó như những người khác. MSbuild toàn bộ giải pháp vs2012. Tôi chạy vào tấn "tài liệu tham khảo tập tin tròn không được phép". Hãy đến để tìm hiểu tất cả những điều khiển có tổ chức độc đáo này được sử dụng ở khắp mọi nơi và có những tham chiếu vòng tròn ở khắp mọi nơi. I read this và tôi đã chuyển "web.config" thành compilation batch="false"
và sau đó trong bản dựng, hãy đặt trang web thành "không thể cập nhật" và "sử dụng các cụm đặt tên cố định". Các trang web xây dựng nhưng mất nghĩa đen 25 phút để biên dịch trên lõi tứ của tôi, ssd, 16 GB ram dev hộp. Đây là thời gian xây dựng không được chấp nhận.
Tôi biết rằng nếu tôi tắt "sử dụng cụm đặt tên cố định" thì trang web sẽ xây dựng nhanh hơn đáng kể. (Tôi đã chứng minh nó trên một trong những trang web nhỏ hơn. Nó đã đi từ 4 phút đến 45 giây). Khi tôi làm loại bỏ thiết lập đó tôi nhận được lạ build lỗi:
c:\Projects\Web\Site.master(146): error CS0433: The type 'ASP.usercontrols_modules_viewprofilepopup_ascx' exists in both 'c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\web\8d37b2c6\4c39f0a\App_Web_viewprofilepopup.ascx.4101713c.dll' and 'c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\web\8d37b2c6\4c39f0a\App_Web_xa514so5.dll'
c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\web\8d37b2c6\4c39f0a\App_Web_site.master.cdcab7d2.0.cs(927): error CS0433: The type 'ASP.usercontrols_modules_viewprofilepopup_ascx' exists in both 'c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\web\8d37b2c6\4c39f0a\App_Web_viewprofilepopup.ascx.4101713c.dll' and 'c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\web\8d37b2c6\4c39f0a\App_Web_xa514so5.dll'
error ASPPARSE: c:\Projects\web\Web\UserControls\Modules\JobsLeftMenu.ascx(128): error CS0433: The type 'ASP.usercontrols_modules_imagesgallerymodule_ascx' exists in both 'c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\web\8d37b2c6\4c39f0a\App_Web_imagesgallerymodule.ascx.4101713c.dll' and 'c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\web\8d37b2c6\4c39f0a\App_Web_nvrj33tx.dll'
error ASPPARSE: c:\Projects\web\Web\Site.master(146): error CS0433: The type 'ASP.usercontrols_modules_viewprofilepopup_ascx' exists in both 'c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\web\8d37b2c6\4c39f0a\App_Web_viewprofilepopup.ascx.4101713c.dll' and 'c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\web\8d37b2c6\4c39f0a\App_Web_xa514so5.dll'
Đây là chính xác lệnh aspnet_compiler.exe:
aspnet_compiler.exe -v/web -p Web \ -f " Web biên dịch trước "
Tôi đã tìm kiếm câu trả lời. KHÔNG, họ không bị trùng lặp trong mã ở bất cứ đâu. Chúng chỉ xảy ra trong các thư mục khác nhau, được sử dụng bởi các điều khiển khác trong các thư mục khác nhau. Tôi có cảm giác điều này là do tham chiếu tập tin vòng tròn. Ok ... Được rồi. Tôi loại bỏ việc sử dụng một vài trong số này để xem nó sẽ xây dựng và quá trình xây dựng chỉ di chuyển vào các lỗi khác như thế này. Tôi không thể chỉ cần xóa mã trên tất cả để phù hợp với điều này ... Làm thế nào tôi có thể sửa chữa các lỗi này mà không cần bật "sử dụng lắp ráp đặt tên cố định"?
Thing của tôi đã thử
- dọn dẹp các
Temporary ASP.NET Files
tất cả trên toàn hệ thống của tôi. - Đã cố gắng "xuất bản" ngay trong studio trực quan 2012. Lỗi tương tự.
- Đã cố chuyển đổi trang web thành Ứng dụng web nhưng có quá nhiều lỗi (tối đa 600+).
- Một lần nữa: đảm bảo rằng không có tệp và mã trùng lặp nào có thể giải thích được. Tôi đã tìm kiếm toàn bộ thư mục giải pháp bằng notepad ++ để xác thực rằng không có một điều khiển khác có cùng tên.
- Checked this.
- Tôi có chỉnh hiệu suất msbuild bật:
/m /p:CreateHardLinksForCopyLocalIfPossible=true /p:BuildInParallel=true
tôi stumped và dường như nghĩ rằng lựa chọn duy nhất của tôi là phải viết lại các ứng dụng, slog thông qua các lỗi như tôi chuyển sang một ứng dụng Web hoặc tiếp tục triển khai nguồn tới máy chủ web nhưng thực hiện tự động.
Đầu ra lỗi bạn liệt kê ở trên những gì bạn nhận được từ việc chạy aspnet_compiler chưa? Tôi đã dự kiến sẽ thấy lỗi tham chiếu vòng tròn thay thế. –
@DavidEbbo Lỗi đó là do chạy với web.config: compilation batch = "false" và msbuild không có "fixednames". –
Vì vậy, sau đó trong điều kiện gì là bạn thay vì nhìn thấy các tham chiếu 'Thông tư tập tin tham chiếu không được phép'? Khi thử nghiệm một kịch bản hình tròn tầm thường, đó là những gì tôi nhận được. –