T4MVC "запустить настраиваемый инструмент" генерирует предупреждение EnvDTO 7.0 против 8.0 csc
Я получаю следующее предупреждение, когда я нажимаю правой кнопкой мыши на 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
Это неважно, мне просто не нравятся (ненужные) предупреждения в моей кодовой базе...
Ответы
Ответ 1
Я не совсем понял, в чем проблема, но я выделил ее для небольшого воспроизведения, где это происходит:
<#@ 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
Единственный EnvDTE в моем GAC - 8.0.0.0. Похоже, что проблема связана с тем, что VSLangProj 7.0.3300.0 (единственное, что у меня есть) имеет ссылку на EnvDTE 7.0.3300.0, которая не существует.
Ясно, что это еще не "ответ", но это начало расследования:)
Ответ 2
Изменить:
< # @assembly name= "EnvDTE" # >
To:
< # @assembly name= "EnvDTE, Version = 8.0.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a" # >
в T4MVC.tt и он удалит предупреждение компилятора:)
Дэвид - я собираюсь отправить запрос на перенос с исправлением MvcContrib в ближайшее время - просто сообщите мне, что вы довольны этим решением, прежде чем я это сделаю:)
Ответ 3
Добавьте 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>