2017-03-15 19 views
0

私はVS2013とVS2015で長年働いていた設計時のT4テンプレートを持っています。Visual Studio 2017でT4アセンブリディレクティブが破損しました

VS2017では、テンプレートがMissingMethodExceptionで実行されません。問題の方法は、カスタムアセンブリ内に格納されています。アセンブリは、$(SolutionDir)マクロとともに絶対パスを使用して参照されます。何かが好きです:

<#@ assembly name="$(SolutionDir)path\my.dll"#> 

私はこの問題をデバッグするためにFusion Log Viewerを使用しています。どうやら、 "my.dll"が見つかりません。また、ログによると、Visual Studioは絶対パスを調べていません。

私はこれがT4VSHost内のバグだと考えます。とにかくこれを修正するか回避する方法はありますか?

+0

回避策として、私は$(DevEnvDir)の "my"サブディレクトリにmy.dllを配置します。個人的には、これは悪い習慣だと私は思う。しかし、フュージョンはそれをこのように見つけるでしょう。私はそれをより責任ある場所に置き、Fusionにどこにそれを見つけるよう指示するのが好きです。 –

+0

ファイルパスの作業をハードコーディングできますか? – qxg

+0

@qxg、マクロ(またはマクロ展開)に何か問題があるとお考えですか?明らかに、それは問題ではありません。理論をテストするためにパスをハードコーディングしました。 –

答えて

0

Visual Studioは、2017以前では、現在のVSセッションで構築したアセンブリをロックします。あなたのパスが何かのように見えたら。

<#@ assembly name="$(SolutionDir)SomeProjectFolder\bin\Debug\SomeAssembly.dll" #>

そして、T4エンジンは、アセンブリが見つからないと言って例外がスローされます。ソリューションを再起動してビルドせずにT4テンプレートを実行すると、正しく実行されます。

これは主にT4テンプレートの参照用に意図されたアセンブリのデバッグやその他の作業を行います。

関連する問題