2010-03-11 13 views
6

Bir ASP.NET web sitesine sahibim ve bir dış kullanım için/bin/[Yapılandırma] klasörünü bulmak istiyorum araç (bir exe dosyası). Her dll sıcaklığında ASP.NET Files altında kendi dizini vardırASP.NET dosyasındaki bin/[Yapılandırma] klasörünü asp geçici klasör yerine bulmak için yansıma kullanabilir miyim?

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

beri bu benim için başarısız: Ben montajlar yerini çağırarak almak için yansıma kullandığınızda o benzer bir şey döndürür.

Dll'ler ve .exe'nin asp.net'in geçici önbelleği yerine (yani bin /) olduğu derlenmiş ikili klasörün yerini nasıl edinebilirim?

Notlar

  • Bu kod ASP.NET web sitelerine veya diğer konsol/windows uygulamalar çağrılabilir destekleyici kütüphanede.
+0

"Diğer konsol/windows uygulamalarından" çağrıldığında, web sitesi hakkında nasıl bilgi sahibi olur? –

+0

> "Asp.net'in geçici önbelleği değil, ikili konumun yerini nasıl alabilirim?" Hangi ikili? Kendiniz mi, çağrı yapan ikili mi? –

+0

Yapmıyor, istemiyorum. Kütüphane .dll ile birlikte son bölme/[Yapılandırma] dizinine kopyalanan bir 3. parti .exe olan bir C# kitaplığıdır. Kütüphane .exe'yi çalıştırmak zorundadır ve tüm farklı yapılar farklı konumlarda ortaya çıktığı için yapılandırılması veya yapılandırılması gerekir. Şu anda onu yapılandıyorum (global.asax içinde, web sitesi için bin dizinini bulmak zorundayım). Kutunun nerede olduğunu tespit edebilmesini umuyordum. – vfilby

cevap

13

Sen (How to: Get the Application Directory alınan) deneyin olabilir:

  • VS dev sunucusunda altında çalışan bir Web uygulaması proje (derlenmiş site/bin:

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

    Birlikte ufak bir test kurmak dizin, vb.

  • WA tarafından başvurulan bir sınıf kitaplığı projesi.

    dosyası:

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

Bu sayfada aşağıdaki gibi sonuçlanır: Ben kütüphane projesinden aşağıdaki yöntemi adlı bir sayfa oluşturulan web uygulamasında

  • : \ C: \ Users \ KullanıcıAdı \ Belgeler \ Visual Studio 2008 \ Web Siteleri \ Çözüm \ Project \ bin

    Beklediğim şey budur.

    +0

    Bu umut verici görünüyor bugün daha sonra deneyeceğim! – vfilby

    +2

    Yanıtladığınızdan bu yana birkaç kez kullandım, keşke her kullanım için oy verebilseydim. – vfilby

    +0

    Heh, probs yok - bu yorum yeterli :) –

    4

    Server.MapPath ("~ \ bin")

    +0

    Bu, ASP.NET'ten çağrılan veya normal C# windows uygulamalarından çağrılabilen destekleyici bir kütüphanede bulunur. – vfilby

    +0

    Bu durumda, destekleyici kitaplığın yapılandırmasının bir parçası olması gerekir veya yöntemlerinden birinde istenen yolu geçmeniz gerekir. – Bryan

    0

    Herhangi bir neden sadece

    Server.MapPath("~/bin"); 
    

    yapmamayı?

    +0

    Bu, ASP.NET'ten çağrılabilecek veya normal C# windows uygulamalarından çağrılabilen destekleyici bir kütüphanede bulunur. – vfilby

    +0

    neyi bulduktan sonra (/) derleme ile yapmaya çalışıyorsunuz? Fiziksel dosya konumunu bilmeniz bile gerekiyor mu? – Paul

    +0

    Çalıştırmam gereken bir exe, bin/[Configuration] öğesinde bulunur. Şu anda konumu manuel olarak yapıyorum. Bunu biraz daha genel hale getirmeyi umuyordum. – vfilby

    İlgili konular