2016-10-05 4 views
0

.NET Core 클래스 라이브러리 프로젝트가 있고 디자인 타임 T4 템플릿을 사용하고 싶습니다..NET 핵심 프로젝트 내에서 T4 템플릿을 사용할 수 없습니다.

tempalate 제대로 컴파일,하지만 난 반사를 사용하려고 할 때 오류

Running transformation: System.IO.FileNotFoundException: Could not load file or assembly 'System.Runtime, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified. 
File name: 'System.Runtime, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' 
    at Microsoft.VisualStudio.TextTemplating91FD7CCD92D7361F64265F0C5C220E81E842FC4A778C4D459155BDB3A79CCB52D465743E28886D98FF13456BEB0A44361D5237CFADD6B4BDEEED323B315D2F62.GeneratedTextTransformation.TransformText() 
    at System.Dynamic.UpdateDelegates.UpdateAndExecute1[T0,TRet](CallSite site, T0 arg0) 
    at CallSite.Target(Closure , CallSite , Object) 
    at Microsoft.VisualStudio.TextTemplating.TransformationRunner.PerformTransformation() 

을 제기 이건 내 코드입니다 :

<#@ output extension=".cs" hostspecific="false" #> 
<#@ assembly name="$(TargetDir)$(Configuration)\netstandard1.6\MyProject.dll" #> 
<#@ import namespace="System" #> 
<#@ import namespace="System.Reflection" #> 

<#@ import namespace="MyProject" #> 

using System; 
using System.Reflection; 
namespace MyProject 
{ 
    public class TestClass 
    { 
     public static void Method() 
     { 
      <# 
       var type = typeof(Product); 
       var properties = type.GetRuntimeProperties(); 
       // use properties here... 

      #> 
     } 
    } 
} 

내가 Nuget를 사용하여 System.Runtime 4.1에 대한 참조를 추가 한 .

답변

0

문제의 원인은 System.Reflection이 아니며 MyProject.dll 라이브러리에 대한 참조입니다.

T4 템플릿 엔진은 .NET Platform Standard를 대상으로하는 라이브러리를 참조 할 수 없습니다. 라이브러리를 참조하려면 참조 된 라이브러리의 project.json에 .NET Framework 용 대상 (예 : net451 for .NET Framework 4.5.1)을 추가해야합니다.

"frameworks": { 
    "net451": {}, 
    "netstandard1.6": { 
     "imports": "dnxcore50" 
    } 

그런 다음 템플릿의 참조를 추가 된 대상 프레임 워크로 변경하십시오.

<#@ assembly name="$(TargetDir)$(Configuration)\netstandard1.6\MyProject.dll" #> 

<#@ assembly name="$(TargetDir)$(Configuration)\net451\MyProject.dll" #> 
된다
관련 문제