Обновление до Visual Studio 2010 прервало генерацию кода - получение DirectoryNotFoundException - PullRequest
0 голосов
/ 17 октября 2010

Я пытаюсь перенести свое решение (веб-приложение ASP.NET с примерно дюжиной зависимых сборок) на VS 2010, и у меня появляются новые ошибки сборки.

Error   909 Running transformation: System.IO.DirectoryNotFoundException:
Could not find a part of the path 'c:\Program Files (x86)\Microsoft Visual Studio
10.0\Common7\IDE\SomeProject\Templates\MyTemplate.xml'.
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)

Проблема довольно ясна- он пытается загрузить XML для моего сгенерированного кода, но вместо поиска в $ (SolutionDir) \ SomeProject \ Templates \ MyTemplate.xml он ищет в. \ SomeProject \ Templates \ MyTemplate.xml (где. - исполняемый файл Visual Studioрабочий каталог, я полагаю).

Кажется, что за кулисами слишком много магии, и я не могу найти какие-либо предпочтения или настройки конфигурации, которые определяют это.Похоже, что большая часть конфигурации генератора находится в реестре.

Кто-нибудь сталкивался с чем-то подобным раньше?

Обновление: я использую Visual Studio 2010 Professional 10.0.30319 RTMRel.В рамках миграции я также позволил обновить мои проекты с .NET 3.5 до .NET 4.

Ответы [ 2 ]

1 голос
/ 11 марта 2014

Я знаю, что это старый вопрос, но в интересах помощи другим, которые могут появиться позже, есть две вещи, которые могут это исправить.

Прежде всего, нужна первая строка в вашем шаблонечтобы задать для hostpecific значение true.

Это должно выглядеть примерно так:

<#@ template debug="false" hostspecific="true" language="C#" #>

Во-вторых, есть лучший и более надежный способ определения пути на хосте.1009 * Возможно, у вас есть строка кода, которая выглядит примерно так:

const string inputFile = @"<relative path to EDMX file>"

Лучший способ закодировать это следующим образом:

string rootPath = Host.ResolvePath(String.Empty);
string relativePath = @"<relative path toe EDMX file>";
string inputFile = Path.Combine(rootPath, relativePath);
0 голосов
/ 18 октября 2010

Я бы посоветовал изучить CodeSmith Generator , он имеет много преимуществ по сравнению с T4, и вам не придется долго ждать исправления ошибки.

Спасибо Блейк Немийский

...