2016-10-05 16 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" #> 
なり
関連する問題