50900


参照しているdllの中にあるクラスを参照しようとしているのですが、  
'ClassLibrary' が見つかりませんでしたというエラーがでてしまいます。  
dllはクラスライブラリプロジェクトで作っています。  
どうすればよいでしょうか。

[code]

    <#@ template debug="false" hostspecific="false" language="C#" #>
    <#@ assembly name="System.Core" #>
    <#@ import namespace="System.Linq" #>
    <#@ import namespace="System.Text" #>
    <#@ import namespace="System.Collections.Generic" #>
    <#@ import namespace="ClassLibrary" #>
    <#@ output extension=".txt" #>
    
    <#
        string strText = ClassLibrary.Common.GetVersionData();
    #>
    
[/code]


CC BY-SA 4.0
2018-12-04T10:46:07.693
50896
2018-12-04T12:45:35.560
30138
question
c#
テンプレートファイルで参照しているdllのクラスを呼び出す


[`import`ディレクティブ](https://docs.microsoft.com/ja-
jp/visualstudio/modeling/t4-import-
directive?view=vs-2017)はソースコードを記述する際に名前空間を省略可能にするだけの機能であり、そもそも存在しないクラスにアクセスできるようにする機能は持っていません。  
今回の場合、[`assembly`ディレクティブ](https://docs.microsoft.com/ja-
jp/visualstudio/modeling/t4-assembly-
directive?view=vs-2017)でDLLを読み込む必要があります。ではどうやってファイル名を指定するかという話になりますが、[`template`ディレクティブ](https://docs.microsoft.com/ja-
jp/visualstudio/modeling/t4-template-
directive?view=vs-2017)の[`hostspecific`属性](https://docs.microsoft.com/ja-
jp/visualstudio/modeling/t4-template-directive?view=vs-2017#hostspecific-
attribute)を使います。`Host.ResolvePath(filename)`メソッドを使うことでファイルの場所を特定できるようになります。

残念ながら質問文にはdllのファイル名や配置されているパスが提示されていないので具体例は回答できません。


CC BY-SA 4.0
2018-12-04T12:45:35.560
50900
2018-12-04T12:45:35.560
4236
50896
answer