11

T4MVC.tt を右クリックして [カスタム ツールの実行] を選択すると、次の警告が表示されます (つまり、T4MVC.cs ファイルで再構築します)。

警告 1 コンパイル変換: アセンブリ参照 'EnvDTE, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' が 'EnvDTE, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' に一致すると仮定すると、ランタイムを指定する必要がある場合がありますポリシー C:\Development\EHealth-Trunk\src\EHealth.Web\T4MVC.tt 1 1

それは本当に大したことではありません。コードベースに(不必要な)警告が表示されるのは好きではありません...

4

3 に答える 3

3

私は問題が何であるかを完全には理解していませんが、これが発生する小さな再現にそれを分離しました:

<#@ template language="C#" #>
<#@ assembly name="EnvDTE" #>
<#@ assembly name="VSLangProj" #>

<#+ 
void Test(EnvDTE.Project Project) {
    var vsProject = (VSLangProj.VSProject)Project.Object;
    var refs = vsProject.References;
}
#>

処理中に次の警告が表示されます。

Compiling transformation: Assuming assembly reference 'EnvDTE, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' matches 'EnvDTE, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a', you may need to supply runtime policy

私のGACの唯一のEnvDTEは8.0.0.0です。問題は、VSLangProj 7.0.3300.0(私が持っている唯一のもの)が存在しないEnvDTE7.0.3300.0への参照を持っているという事実に関連しているようです。

明らかに、これはまだ「答え」ではありませんが、調査の始まりです:)

于 2011-07-26T18:41:01.997 に答える
2

変化する:

<#@ アセンブリ名="EnvDTE" #>

に:

<#@ assembly name="EnvDTE, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" #>

T4MVC.tt で、コンパイラの警告を削除します:)

David - MvcContrib への修正を含むプル リクエストをすぐに送信する予定です - 実行する前に、その解決策に満足していることをお知らせください :)

于 2011-07-27T07:27:46.230 に答える
1

app.config を追加して、このコードを以下に貼り付けます。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1" appliesTo="v2.0.50318">
        <dependentAssembly>
            <assemblyIdentity name="EnvDTE" publicKeyToken=
            "b03f5f7f11d50a3a"/>
            <bindingRedirect oldVersion="7.0.3300.0" 
            newVersion="8.0.0.0"/>
        </dependentAssembly>
    </assemblyBinding>
</runtime>

于 2013-07-11T15:48:17.450 に答える