2017-12-13 18 views
0

Swagger 정의에 대한 URL을 지정하면 NSwag를 사용하여 서비스 용 C# 프록시를 생성하는 서비스를 개발하고 있습니다. 전체 프록시는 단일 C# 파일 내에 포함됩니다.Roslyn CSharpCompilation을 사용하여 .NET 표준 2.0 DLL 생성

생성 된 코드를 Roslyn을 사용하는 .NET Standard 2.0 DLL로 컴파일하는 작업을 자동화하고 싶습니다. 이 작업은 CSharpCompilation 클래스를 사용하여 메모리 내에서 수행해야합니다.

이것이 가능한지 확인하기 위해 Visual Studio 2017에서 .NET Standard 2.0 클래스 라이브러리 프로젝트를 만들고 Newtonsoft.Json (10.0.3) 및 System.ComponentModel.Annotations (4.4.0)에 NuGet 종속성을 추가했습니다. . 프로젝트 유형이 NETStandard.Library에 대한 SDK 종속성도 가져온다는 것을 알 수 있습니다.

나는 프로젝트 파일을 사용하여 Roslyn과 함께 DLL을 생성하지 않는다는 것을 이해하지만 동일한 DLL을 생성하는 데 필요한 동일한 단계를 찾아 내려고 노력하고 있습니다.

+0

왜 프로젝트 파일을 사용하지 않으십니까? 훨씬 쉽게 할 수 있습니다. –

+0

프로젝트 파일에서 피드를 제공 할 수있는 예제를 보지 못했지만 나를 연결할 수 있습니까? –

+0

그냥 dotnet cli를 사용하십시오 –

답변

1

.NET 표준 DLL을 작성하는 열쇠는 올바른 DLL을 선택하여 MetadataReference 개체로 추가하는 것이 었습니다. 처음에는 Visual Studio 2017 .csproj 형식이 명시 적으로 참조하지 않았기 때문에 이러한 내용이 무엇인지 분명하지 않았습니다.

netstandard.library 용 NuGet 패키지를 다운로드하고 내용을 반복하여 각 DLL을 MetadataReference로 추가 할 수있었습니다. 이것은 NetStandard.Library에 .csproj SDK 종속성을 추가하는 것과 동일한 목표를 달성한다고 생각합니다.

이러한 참조가 추가되어 생성 된 코드를 컴파일 할 수있었습니다. .NET Core 2.0 콘솔 응용 프로그램에서 참조하여 출력 어셈블리를 테스트했습니다.

더 쉬운 방법이있을 수 있습니다. 듣고 싶습니다.