2010-03-11 23 views
6

Tôi có một trang web ASP.NET và tôi muốn tìm thư mục/bin/[Configuration] để sử dụng bên ngoài công cụ (một tập tin exe). Khi tôi sử dụng phản ánh để có được gọi hội vị trí nó sẽ trả về một cái gì đó tương tự như:Tôi có thể sử dụng phản chiếu để tìm thư mục bin/[Configuration] trong ASP.NET thay vì thư mục tạm thời asp

C:\Windows\Microsoft.NET\Framework\\...\Temporary ASP.NET Files\a1388a5e\\...\my.dll

Vì mỗi dll có thư mục riêng của mình theo temp ASP.NET Files này không thành công đối với tôi.

Làm cách nào để có được vị trí của thư mục nhị phân đã biên dịch trong đó dll và .exe là (ví dụ: bin /) thay vì cache tạm thời của asp.net?

Ghi chú

  • Mã này là trong một thư viện hỗ trợ có thể được gọi từ các trang web ASP.NET hoặc các ứng dụng giao diện điều khiển/cửa sổ khác.
+0

Khi được gọi từ "ứng dụng cửa sổ điều khiển/cửa sổ khác", làm thế nào để biết về trang web? –

+0

> "Làm thế nào tôi có thể nhận được vị trí của nhị phân, không phải là bộ đệm tạm thời của asp.net?" Nhị phân nào? Của riêng bạn, hoặc gọi nhị phân? –

+0

Không, tôi cũng không muốn. Đó là thư viện C# có một bên thứ ba .exe được sao chép vào thư mục bin/[Config] cuối cùng cùng với thư viện .dll. Thư viện phải chạy .exe và vì tất cả các bản xây dựng khác nhau kết thúc ở các vị trí khác nhau, nó phải được cấu hình hoặc cấu hình chính nó. Ngay bây giờ tôi đang cấu hình nó (trong global.asax vì tôi phải tìm thư mục bin cho trang web). Tôi đã hy vọng có nó chỉ có thể phát hiện nơi bin. – vfilby

Trả lời

13

Bạn có thể thử (lấy từ How to: Get the Application Directory):

Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase); 

tôi thiết lập một thử nghiệm nhanh với:

  • Một dự án ứng dụng Web chạy dưới máy chủ dev VS (trang web biên soạn,/bin thư mục, v.v.)
  • Dự án thư viện lớp học, được tham chiếu bởi WA.
  • Trong ứng dụng web tôi đã tạo một trang gọi là phương pháp sau đây từ các dự án thư viện:

    using System.IO; 
    using System.Reflection; 
    
    namespace TestHelpers { 
        public class ClassHelpers { 
        public static string PathToBin() { 
         return Path.GetDirectoryName(
           Assembly.GetExecutingAssembly().GetName().CodeBase); 
        } 
        } 
    } 
    

Điều này dẫn đến đầu ra sau đây trên trang:

file: \ C: \ Users \ Tên người dùng \ Documents \ Visual Studio 2008 \ Trang web \ Giải pháp \ Project \ bin

Đó là những gì tôi mong đợi.

+0

Điều đó có vẻ hứa hẹn tôi sẽ dùng thử sau ngày hôm nay! – vfilby

+2

Tôi đã sử dụng số lần này kể từ khi bạn trả lời, ước gì tôi có thể bỏ phiếu cho mỗi lần sử dụng. – vfilby

+0

Heh, không có probs - mà bình luận đủ :) –

4

Server.MapPath ("~ \ bin")

+0

Đây là thư viện hỗ trợ có thể được gọi từ ASP.NET hoặc có thể được gọi từ các ứng dụng C# windows thông thường. – vfilby

+0

Trong trường hợp đó, nó cần phải là một phần của cấu hình cho thư viện hỗ trợ, hoặc bạn cần truyền vào đường dẫn mong muốn theo một trong các phương thức của nó. – Bryan

0

Bất kỳ lý do để không chỉ làm

Server.MapPath("~/bin"); 

?

+0

Đây là một thư viện hỗ trợ có thể được gọi từ ASP.NET hoặc có thể được gọi từ các ứng dụng C# windows thông thường. – vfilby

+0

những gì bạn đang cố gắng để làm w/lắp ráp (các) một khi bạn đã tìm thấy nó (/ họ)? Bạn thậm chí có cần phải biết vị trí tập tin vật lý? – Paul

+0

Đó là một exe mà tôi cần để chạy mà nằm trong bin/[Cấu hình]. Hiện tại tôi đang định cấu hình vị trí theo cách thủ công. Tôi đã hy vọng để làm cho nó một chút chung chung hơn. – vfilby

Các vấn đề liên quan