2017-12-22 3 views
-1

ProjectBが私のソリューションで参照しているProjectAがあります。 ProjectBを実行しているときにProjectAの「パス」を取得しようとしています。参照されたローカルアセンブリの場所を取得

私はこれを試してみた:ProjectBので実行

// HomeController is in ProjectA 
// This code is executed from ProjectB 
var assembly = typeof(HomeController).Assembly; 
string filePath = new Uri(assembly.CodeBase).LocalPath; 

返しProjectBのパス、代わりにPROJECTAパスのを。

EDIT: パスにUnitTestProject1が表示されます。私はWebApplication1へのパスを取得したい。

enter image description here

答えて

0

私はあなたが参照するファイルは、プロジェクトB(メインのbinフォルダにコピーされることを保証しなければならないだろうと思い、この

System.Reflection.Assembly.GetAssembly(typeof(SmsController)).Location; 
+0

を、あなたはPROJECTAから 'SmsController'そのよろしいですか?それはあなたがアセンブリからタイプを渡す必要があるだけで動作します – Marusyk

+0

はい。 SmSControllerはProjectAの中にあります。私は2つのプロジェクトで簡単なソリューションを持っています。それでおしまい。 1つはWebで、もう1つはUnitTestsです。 UnitTests参照Web – ShaneKm

+0

編集をご覧ください。 – ShaneKm

0

を使用する参照アセンブリの場所を取得するにはプロジェクト)。次に、このコードを使用することができます:

string code = Assembly.GetExecutingAssembly().CodeBase; 
    UriBuilder uri = new UriBuilder(code); 
    string path = Uri.UnescapeDataString(uri.Path); 
    return Path.GetDirectoryName(path); 

これは、binフォルダへのパスを返します。

は、私はあなたがembeededリソースまたはリンクされたリソースのいずれかのように参照したいファイルを追加する必要がありますと思う:だからhttps://msdn.microsoft.com/en-us/library/ht9h2dk8(v=vs.100).aspx

関連する問題