2013-10-25 2 views
1

Roslyn에게 내 .csproj 파일에 저장된 참조를 제공하려고합니다. 이것은 로컬 파일이 있으면 간단하지만 시스템과 같은 "표준"어셈블리에 대한 참조를 추가하는 데 문제가 있습니다. 어떻게해야합니까 (Roslyn, MsBuild 또는 기타)? Roslyn은 파일 경로를 기반으로 참조를 허용하므로 어셈블리를 이름으로 추가 할 수 없습니다 (즉, 먼저로드하지 않고). 아니면 내가 할 수 있니? 그렇지 않은 경우 프로젝트 참조에 나열된 어셈블리의 경로를 찾으려면 어떻게해야합니까?표준 어셈블리의 위치를 ​​얻는 방법은 무엇입니까?

내가 언급 한 어셈블리가 반드시 GAC에서 나오는 것은 아니라는 것을 알고 있습니다. 로슬린 확실하지만, 일반적인

답변

0
[Test] 
public void MsBuildPropertyContainsRefeerenceAssemblyFolder() { 
    var project = new Project(@"D:\\Projects\\Chpokk\\src\\Chpokk.Tests\\Chpokk.Tests.csproj"); 
    var property = project.AllEvaluatedProperties.First(projectProperty => projectProperty.Name == "FrameworkPathOverride"); 
    Console.WriteLine(property.EvaluatedValue); 
} 

(당신이 위에 using Microsoft.Build.Evaluation;을 추가해야합니다)

(그들은 당신이 VS를 설치 이러한 목적을 위해 intentially PC에 복사됩니다)

사실이 파일은 볼 수있는 맨 폴더 중 하나이지만 가장 분명합니다. 전체 목록은 AssemblySearchPaths 속성을 통해 얻을 수 있으며 레지스트리에있는 폴더를 포함합니다.

1

하지 CSHARP 프로젝트는 C에서 DLL의의와 (에는 Csc.exe) 보통 CSHARP 컴파일러를 공급 : \의 Program Files (x86) \ 참조 어셈블리 \ 마이크로 소프트 \

building a sample solution

I 당신이이 참조 어셈블리를 시도하는 것이 좋습니다

+0

감사합니다. 그러나 이것이 내가 필요한 것은 아닙니다. 원격 컴퓨터에서 프로그래밍 방식으로 찾아야합니다. 그럼에도 불구하고, 당신의 대답은 올바른 방향으로 푸시되었습니다. 그래서 저는 그것을 올렸습니다. – ulu