Các lớp cư trú trong App_Code không thể truy cập được


197

Tôi đã tạo một trang web trong ASP.NET và đã tạo một lớp và đặt nó vào trong thư mục App_Code. Tuy nhiên tôi không thể truy cập nó từ các trang khác của tôi. Có một cái gì đó cần phải được cấu hình để cho phép điều này? Tôi đã làm cho nó hoạt động trong các dự án trước đây, nhưng không phải trong dự án này, bằng cách nào đó.

namespace CLIck10.App_Code
{
    public static class Glob
    {
        ...
    }
}

1
Tôi giả sử bạn bao gồm không gian tên trong các trang web của bạn?
Alex Czarto

1
Có thể trùng lặp - stackoverflow.com/questions
409070 / từ

Câu trả lời:


637

Nhấp chuột phải vào .cstập tin trong App_Codethư mục và kiểm tra thuộc tính của nó.

Đảm bảo "Xây dựng hành động" được đặt thành "Biên dịch".


10
Làm thế nào bạn có thể đặt điều này làm hành động xây dựng mặc định? hoặc tôi phải làm điều đó cho mọi tệp trong thư mục App_Code?
Malachi

3
Tại sao tôi không thể làm điều này trong Visual Studio 2012 ??!
RSK

4
Điều này dường như là một lỗi trong VS2012. Xảy ra với tôi quá.
James Nail

2
đối với những người muốn biết thêm chi tiết, bạn có thể tìm thấy tại: how-to-code-net.blogspot.ro/2014/04/ Kẻ
Alexa Adrian

3
Yay điều này đã giải quyết được 142 lỗi trong dự án Visual Studio của tôi, cảm ơn rất nhiều vì đã chia sẻ giải pháp này: -]
Michael G. Workman

14

Đặt phần này ở đầu các tệp khác mà bạn muốn truy cập lớp:

using CLIck10.App_Code;

HOẶC truy cập lớp từ các tệp khác như thế này:

CLIck10.App_Code.Glob

Không chắc đó có phải là vấn đề của bạn hay không nhưng nếu bạn chưa quen với C # thì đây là một vấn đề dễ gặp phải.

Cập nhật: Gần đây tôi thấy rằng nếu tôi thêm thư mục App_Code vào dự án, thì tôi phải đóng / mở lại Visual Studio để nhận ra đúng thư mục "đặc biệt" này.


1
Đó là một cái gì đó để làm với hành động xây dựng bằng vẻ ngoài của nó - câu trả lời của FailBoy đã giải quyết vấn đề. Dù sao cũng cảm ơn vì đã trả lời :)
Malachi

Một thứ tuyệt vời khi tôi thêm một không gian tên vào lớp trong thư mục App_Code.
mashtheweb

Tại sao chúng ta phải bao gồm không gian tên như vậy? Tại sao intelliSense không thể truy cập lớp đó mà không chỉ định tên của thư mục?
Elham Kohestani

10

Chuyển đến trang mà bạn muốn truy cập lớp App_code và sau đó thêm không gian tên của lớp app_code. Bạn cần cung cấp một usingtuyên bố, như sau:

using WebApplication3.App_Code;

Sau đó, bạn sẽ cần chuyển đến thuộc tính lớp app_code và đặt 'Xây dựng hành động' thành 'Biên dịch'.


4

đảm bảo rằng bạn đang sử dụng cùng một không gian tên với các trang của bạn


1
Nhưng tại sao khi nó ở APP_CODE? Tôi nghĩ rằng bất cứ điều gì trong đó với các lớp CÔNG CỘNG nên được phơi bày trong suốt giải pháp một cách tự động!?
Fandango68

4

Tôi vẫn chưa tìm ra lý do tại sao điều này xảy ra, nhưng tôi có các lớp trong App_Codethư mục của mình đang gọi các phương thức với nhau và đã làm tốt điều này khi tôi xây dựng một dự án .NET 4.5.2, nhưng sau đó tôi phải hoàn nguyên nó về 4.0 khi máy chủ mục tiêu không được nâng cấp. Đó là khi tôi tìm thấy vấn đề này (sau khi sửa lỗi langversiontrong web.config của tôi từ 6 đến 5 ... một câu chuyện khác) ....

Một trong những phương pháp của tôi liên tục gặp lỗi như:

The type X.Y conflicts with the imported type X.Y in MyProject.DLL

Tất cả các lớp của tôi đã được đặt thành "Biên dịch" trong các thuộc tính của chúng, như được đề xuất cho câu trả lời được chấp nhận ở đây và mỗi lớp có một không gian tên giống nhau và đều có using MyNamespace;ở đầu mỗi lớp.

Tôi thấy rằng nếu tôi vừa chuyển các lớp vi phạm phải gọi các phương thức lẫn nhau sang một thư mục tiêu chuẩn khác có tên khác là "App_Code", thì chúng đã ngừng gặp vấn đề xung đột này.

Lưu ý : Nếu bạn tạo một thư mục tiêu chuẩn có tên "AppCode", hãy di chuyển các lớp của bạn vào đó, xóa thư mục "App_Code", sau đó đổi tên "AppCode" thành "App_Code", các vấn đề của bạn sẽ trở lại. Sẽ không có vấn đề gì nếu bạn sử dụng tùy chọn "Thư mục mới" hoặc "Thêm thư mục .NET .NET" để tạo "App_Code" - có vẻ như nhập vào tên.

Có lẽ đây chỉ là sự cố .NET 4.0 (và có thể sớm hơn) ... Tôi đã ổn trong 4.5.2 trước khi phải hoàn nguyên!


0

Tôi thấy việc di chuyển các tệp vào một dự án Thư viện lớp riêng biệt và sau đó tham chiếu dự án đó trong dự án web và áp dụng không gian tên trong usingphần của tệp. Vì một số lý do, các giải pháp khác không hiệu quả với tôi, nhưng công việc này đã làm.


0

Trong trường hợp của tôi, tôi không thể có một dự án để xây dựng với các lớp được xác định trong thư mục App_Code.

Không thể sao chép chính xác kịch bản để bình luận, nhưng phải đóng và mở lại phòng thu trực quan để hợp tác đồng ý ...

Tôi nhận thấy rằng khi một lớp trong thư mục App_Code được đặt thành 'Biên dịch' thay vì 'Nội dung' (nhấp chuột phải vào nó) thì các lỗi xuất phát từ phiên bản thứ hai của lớp ... Nhìn sang bên trái hầu hết 3 trong số 3 trường giữa khung mã và tab. Cái 'khác' được gọi là thứ gì đó dọc theo dòng 10_App_Code hoặc tương tự.

Để khắc phục sự cố, tôi đã đổi tên thư mục từ App_Code thành Code, đặt rõ ràng các không gian tên trên các lớp và đặt tất cả các lớp thành 'Biên dịch'

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.