Как изменить папки сборки в VS2010? - PullRequest
2 голосов
/ 15 сентября 2010

Я получаю сообщение об ошибке в проекте БД VS2010, которое указывает, что в моем пути сборки слишком много символов.

Как изменить путь сборки по умолчанию для всех типов проектов?

Что-то вроде

c:\build\$(projectname)\...... 

Спасибо!

EDIT: Я переместил свой проект в корень диска C: и все еще получаю сообщение об ошибке с моим проектом БД. Я получаю эту ошибку, когда пытаюсь щелкнуть правой кнопкой мыши по проекту и выбрать свойства

Произошла ошибка при попытке загрузить окно свойств проекта. Закройте окно и попробуйте снова. Невозможно оценить метаданные элемента "% (FullPath)". Метаданные элемента "% (FullPath)" нельзя применить к пути "obj \ Debug | Any CPU \ TASS.DB.dbschema". Нелегальные персонажи в пути. C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Microsoft.Common.targets

Ответы [ 4 ]

4 голосов
/ 02 октября 2010

Первое, что здесь бросается в глаза, это то, что ваша платформа и конфигурация сливаются воедино, образуя «Debug | Any CPU», и из этого создается строка - канал - это символ, на который он ссылается, когдаговорит, что есть нелегальные персонажи.Я не уверен, насколько ваш проект базы данных действительно отличается в отношении отладки / выпуска и для архитектуры, но вам, возможно, даже не нужно включать их в путь.

Поскольку вы не можете открыть свойство проектастраниц, вам нужно отредактировать msbuild напрямую, выгрузив его и выбрав «Edit ...» в контекстном меню (извините, если вы уже знаете это).

Оттуда, если вы действительно запускаетена потолке длины пути Windows вы можете использовать некоторые хитрости msbuild, чтобы максимизировать ваш запас там.В частности, выполните что-то похожее на то, что вы предлагаете: используйте диск C: \ везде, где это возможно.

Чтобы сделать это, загляните в PropertyGroups с условиями для ваших конфигураций и конфигураций платформы, а внутри них замените OutputPath иСвойства IntermediateOutputPath, чтобы они были как можно короче, например:

<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
    <OutputPath>$(SystemDrive)\D\A</OutputPath>
    <IntermediateOutputPath>$(SystemDrive)\o\D\A</IntermediateOutputPath>
</PropertyGroup>
  • Это сохраняет некоторые ценные символы в том, что вместо «Отладка» вы используете «D», «A»для «AnyCPU» и «o» для «obj».
  • Вероятно, наиболее важно, что вы используете C: \ o \ для промежуточного каталога сборки вместо C: \ what-the-whole-path-is-в-ваш-проект-файл \ OBJ.Кроме того, это свойство не настраивается на страницах свойств, как я помню.
  • При использовании SystemDrive вместо жестко заданного C: была добавлена ​​некоторая гибкость, и я не ожидал, что оно будет другим..

Наконец, что касается проблемы с загрузкой страниц свойств, я не знаю, как Debug | AnyCPU попал на ваш путь (я не знаю каких-либо свойств, в которых хранится сцепленный вариант)., но вы должны быть в состоянии выбрать его довольно легко, как только вы откроете файл.Надеюсь, это похоже на ошибки загрузки в чем-то вроде конструктора winforms, когда вы меняете одну строку, и вдруг все снова работает снова.

Надеюсь, это поможет!

1 голос
/ 15 сентября 2010

Я не думаю, что можно установить путь сборки по умолчанию для всех проектов, только стандартные папки Debug / Release в самом проекте. Единственное, что я могу предложить, - это просто переместить папку проекта в папку с более коротким путем.

РЕДАКТИРОВАТЬ: В соответствии с новым редактированием, посмотрите здесь:

http://connect.microsoft.com/VisualStudio/feedback/details/594333/database-project-template-files-corrupt

0 голосов
/ 17 октября 2016

Я получил это сообщение, потому что абсолютный путь к одному из файлов в моем проекте превысил 260 символов.Как только я уменьшил длину пути, я смог построить проект.

0 голосов
/ 21 ноября 2015

Я обновил проект с VS 2005 до VS 2010 и получил то же сообщение об ошибке." Метаданные элемента"% (имя файла) "нельзя применить к пути" obj \ Debug | x86 \ Debug \ DemoCSharp.pdb ". Недопустимые символы в пути. " ПроблемаВ том, что Visual Studio 2010 не удается преобразовать файл csproj в новый формат, но он не сообщает нам, где именно ошибка.

В моем файле VS 2005 csproj есть следующий XML-код:

  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">Debug|x86</Platform>
    <ProductVersion>8.0.50727</ProductVersion>
    <SchemaVersion>2.0</SchemaVersion>
    <ProjectGuid>{05F88317-0CA7-4FE5-8520-35422402941A}</ProjectGuid>
    <OutputType>Exe</OutputType>
    <RootNamespace>DemoCSharp</RootNamespace>
    <AssemblyName>DemoCSharp</AssemblyName>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
    <DebugSymbols>true</DebugSymbols>
    <OutputPath>..\output32\</OutputPath>
    <DefineConstants>DEBUG;TRACE</DefineConstants>
    <DebugType>full</DebugType>
    <PlatformTarget>x86</PlatformTarget>
    <ErrorReport>prompt</ErrorReport>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
    <OutputPath>..\output32\</OutputPath>
    <DefineConstants>TRACE</DefineConstants>
    <Optimize>true</Optimize>
    <DebugType>pdbonly</DebugType>
    <PlatformTarget>x86</PlatformTarget>
    <ErrorReport>prompt</ErrorReport>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
    <DebugSymbols>true</DebugSymbols>
    <OutputPath>..\output64\</OutputPath>
    <DefineConstants>DEBUG;TRACE</DefineConstants>
    <DebugType>full</DebugType>
    <PlatformTarget>x64</PlatformTarget>
    <ErrorReport>prompt</ErrorReport>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
    <OutputPath>..\output64\</OutputPath>
    <DefineConstants>TRACE</DefineConstants>
    <Optimize>true</Optimize>
    <DebugType>pdbonly</DebugType>
    <PlatformTarget>x64</PlatformTarget>
    <ErrorReport>prompt</ErrorReport>
  </PropertyGroup>

Visual Studio НЕ сообщает нам, какая строка вызывает проблему.Но я обнаружил, что это «попытка и ошибка».

Причиной сообщения об ошибке явно является ошибка в мастере преобразования Visual Studio , поскольку VS 2005 не имеет проблем с загрузкой этого файла csproj, покаVS 2010 не может преобразовать его.

Таким образом, вы должны вручную отредактировать и исправить этот файл, а затем загрузить его заново в VS2010.

В моем случае строка, которая вызывает ошибку, равна 3.строка с <Platform Condition.Ошибка заключается в том, что VS пытается взять значение ("Debug | x86") этого XML-узла условия платформы и внедрить его в путь на диске (например, "... \ obj \ Debug | x86 \"... ").Но так как символы канала недопустимы в путях , позже он жалуется и прерывает преобразование.

Так как решить проблему?

Я просто заменил третью строку

<Platform Condition=" '$(Platform)' == '' ">Debug|x86</Platform>

с

<Platform Condition=" '$(Platform)' == '' ">Debug</Platform>

, который исключает символ трубы и проект, преобразованный без ошибок.

ПРИМЕЧАНИЕ: Также возможно полное удалениеэта строка.

ВНИМАНИЕ: Возможно, что в ВАШЕМ случае те же сообщения об ошибках требуют другого исправления, чем в моем случае.Пожалуйста, изучите файл csproj и найдите символы канала, а затем попытайтесь с ошибками выяснить, как его изменить.Эта ошибка может даже появиться в других условиях, кроме преобразования проекта.

Но их объединяет то, что это ошибка в Visual Studio (или в случае ошибки расширения программного обеспечения "littlechris"), которая пытается внедрить символ канала в путь.

XML node: "Debug|x86" -> path "...\obj\Debug|x86\..."
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...