2009-06-24 23 views
7

VS, mevcut çözüm yolunda bir ortam değişkenine sahip mi? Örneğin, VS proje dizininizde genellikle "WebSites" dizinine ayarlanmış "% PathToWebRoot%" var. Örneğin, "% PathToWebRoot%" var. Değeri, herhangi bir yolla değiştirilebilir. Köküne işaret edecek bir çözüm yüklediğinizde değişen bir değişken olup olmadığını merak ediyorum.Visual Studio Çözümü Yol ortamı değişkeni

Farklı makineler üzerinde çalıştırılacak birim testleri oluşturuyorum ve yöntem AspNetDevelopmentServerHost kullanılmadan önce ayarlamanız gereken yönlerden biri. Elbette onları kodlamamanız önerilir, ancak önerilen ortam değişkeni mutlaka sitenizin nerede olacağı ve bu durumda olmadığı anlamına gelmez.

cevap

13

VS, VS içinde adresinden çalışan çok sayıda Makro değişkene sahiptir. Size çözümün tam yolunu verene $(SolutionDir) denir. Bununla birlikte, bu, Ön ve Sonrası oluşturma olaylarından (ve çözümün MSBuild dosyasında AFAIK) çalıştığı halde, bu bir ortam değişkeni değildir. Düşündüğünüzde, birden fazla VS açık örneğiniz olabileceğinden "geçerli çözüm yoluna" işaret eden bir (global) ortam değişkenine sahip olamazsınız.

Ünite sınama çerçevenize bağlı olarak, geçerli dizini almak için genellikle yürütme bağlamından bahsedebilirsiniz.

+0

Doğru, VS geçerli örneği değişti bile o öyle maç için:

ziyade çözüm dosyasının yolu daha çözeltinin klasörünü almak için, DOS toplu komut sihirli biraz kullanılan Başka bir örneği mahvedecek ayarlar. Ben (SolutionPath) denemek, VS içinde koşmak birim testlerini vereceğim, böylece ihtiyacım olan şey olabilir. – Otis

+0

Bir çekicilik gibi çalıştık, teşekkürler. Geliştirme sunucusunun mevcut portunu bulmak için bir tane var mı? – Otis

+0

Genelde bu makroların adlarını öğrendiğim yol, projenin Özellikler'i açarak ve Yapı Olayları sekmesine gidilmesidir. Bunu yapar ve Düzenle düğmelerinden birini tıklarsanız, (diğer şeyler arasında) Makrolar düğmesiyle bir iletişim kutusu alırsınız. Bu düğmeye tıkladığınızda, projeniz için mevcut olan tüm makro değişkenlerin bir listesi verilir.Kullanışlı bir web projem yok, bu yüzden size bakamıyorum, ancak şu anda Sınıf Kitaplığındaki herhangi bir port numarası yok. Şu anda ... –

5

Visual Studio, çözüm yolu için bir ortam değişkeni ortaya çıkarır - buna SolutionPath adı verilir. Bu şuna benzer:

SolutionPath=D:\Team\MyProject\main-branch\MyProject.sln

önemlisi, Visual Studio daha çıktı herhangi süreçte kullanabilirsiniz - örneğin, çözümünüzden toplu komut başlatılması (o Visual Studio farklı örnekleri arasında farklı olabilir nasıl).

Visual Studio'yu .bat dosyalarını this guide'u izleyerek çift tıklatarak yapılandırırsanız, ortam değişkeni toplu dosyanızda kullanılabilir. Özel durumumda, çözümümün içinde bir dizine gitmem gerekiyordu ve aynı düzeyde birkaç kod dalı vardı. Ama benim parti komutum, kaynak ağacında daha yüksek bir seviyede idi ve 'geçerli' dalını belirlemenin kolay bir yolu yoktu. Bunun üzerine çift tıklayarak başlatın böylece

D:\Team\MyProject\ 
    L-- Build 
     L-- MyBatchScript.bat 
    L-- main-branch 
     |-- MyProject.sln 
     L-- important-folder 
    L-- dev-branch 
     |-- MyProject.sln 
     L-- important-folder 

Her çözümde bir çözüm öğesi olarak MyBatchScript.bat başvurulan: Örneğin, bu benim yapıydı.

FOR %%d IN (%SolutionPath%) DO SET SolutionFolder=%%~dpd 
REM Now I can run a tool with the correct folder 
mycustomtool.exe %SolutionFolder%important-folder