Абсолютные пути visual studio неправильно
Visual Studio (и, возможно, TFS) каким-то образом (я думаю, возможно, во время слияния с исходным кодом) запутался в пути проекта в моем решении.
Он думает, что это здесь (пример пути для простоты):
а на самом деле, файл проекта находится здесь:
Я не могу для жизни меня заставить его признать правильное местоположение. Я пробовал:
редактирование вручную .sln файл для обеспечения всех ссылок на ExampleProjectCorrect.csproj есть правильные пути.
выполнение поиска в файлах в каталоге решения как для правильных, так и для неправильных путей, чтобы попытаться отследить, где studio скрывает неправильный путь.
удаление каталогов кэша для VS и TFS
я разрываю свои волосы, потому что я не могу воссоздать решение, поскольку оно имеет около 100 проектов и связано с управлением версиями с несколькими другими разработчиками, работающими над ним.
может ли кто-нибудь указать мне в правильном направлении, где он хранит этот неправильный путь и/или как сбросить его, чтобы проклятая вещь загрузилась правильно?
- на Управление Рабочими Областями (либо через меню File/Source Control, либо в раскрывающемся списке workspace в Проводнике управления версиями)
- выберите редактировать для вашего рабочего пространства.
- вы должны увидеть, в разделе рабочие папки, сопоставление для источника управление каталогом в старый / неправильный каталог проекта.
- выберите его и нажмите удалить.
- закрыть VS и удалить файл suo.
просто удаление решений .suo файл работал на меня.
Я столкнулся с этой проблемой после выполнения миграции из Visual Source Safe 2005 в TFS 2012. Я не мог дождаться "мастера преобразования" в ближайшие пару недель, поэтому я просто запустил VSSConvert.исполняемый. Это заняло 6 или около того лет истории и переместило его в TFS.. хотя я не получил фактическую историю временной шкалы.. Я получил кучу записей в тот же день с комментариями, указывающими на фактические проверки истории.. не плохо.
Так что после того, как он бежал всю ночь (успешно, ура!), У меня возникли проблемы с загрузкой моих проектов так же, как этот вопрос заявил. По какой-то причине несколько проектов ссылались на неверный каталог. Я проверил .sln, the .файлы vsproj и получение последних, удаление повторного получения, добавление удаления и т. д.. Я попробовал все, что здесь отмечено. даже обновление моего рабочего пространства, которое я не уверен, что это даже сделало.
наконец-то. Я удалил *.СУО файлы и Виола. Это сработало.
Я потратил пару часов на вот этот.
немного другое решение.
TFS отображал несуществующий путь для конкретного решения. Раньше у меня был ноутбук с отдельным диском D:, но теперь у меня просто есть диск C:. TFS все еще думал, что мой проект был сохранен D:\Project\MikesProject
у меня нет .suo файл для удаления, D: path не упоминается в любом месте моего рабочего пространства (похоронен под File\Source Control\Advanced\Workspaces меню), TFS показал, что у меня есть последние файлы в моем (больше не существует) D: каталог и TFS в VS2013 не имели опции "удалить сопоставления" для этого проекта.
а то сделал работа заключалась в том, чтобы просто сделать "получить последнюю версию" в проекте.
после этого на мой диск C: была записана новая копия кода, и (интересно) теперь был показан локальный путь подчеркнутый.
ранее путь D: не был показан таким образом.
странно. Очень странный.
У нас были подобные проблемы с перемещениями и переименованиями. Удаление локальных каталогов, а затем получение снова решили его.
Попробуйте удалить или переименовать .файл suo (включая расширение). Этот файл находится в том же месте, где находится файл решения. Это сработало для меня.
просто догадываюсь, но, возможно, некоторые из ваших других проектов ссылаются на ваш проект из неправильного места? В этом случае вам нужно не просто удалить и повторно вставить проект в ваше решение, вам также придется удалить и воссоздать ссылки из ссылочных проектов (сохраненных в их .файлов csproj).
после попытки многих рекомендаций я удалил файл suo ( снова ). Последний раз сработало. Почему это не сработало раньше я не знаю. В общем, я считаю удаление файла suo одним из первых шагов, которые я делаю.
в моем случае я скопировал *.sln файл в папку проекта и изменил путь к проекту в *.sln файл. Только это решило проблему (против 2015 с пакетом обновления 1, проект winservise).
удалить *.СУО не помогает мне.
Если вы используете свое веб-приложение под локальным IIS вместо IISExpress, убедитесь, что вы нажали кнопку "создать виртуальный каталог", перейдя в свойства проекта. Как только это будет сделано, выполните "чистое решение" и "перестроить решение".
Я знаю, что это старая линия. Я только что прошел через ту же проблему. Недавно мы перенесли TFS, поэтому я создал новую рабочую область для сопоставления с новым сервером и сохранил старый. Каждый раз, когда я открываю решение, которое должно быть нацелено на мою новую рабочую область, VS всегда пытался загрузить проекты из моего старого каталога сопоставления, пока я не удалил свою старую рабочую область.
Вы можете указать расположение выходных данных проекта для каждой конфигурации (для отладки, выпуска или и того и другого).
Изменение выходного каталога сборки
Чтобы открыть страницы свойств проекта, в обозревателе решений щелкните узел проекта правой кнопкой мыши и выберите пункт Свойства.
В зависимости от типа проекта выберите соответствующую вкладку.
В раскрывающемся списке конфигураций в верхней части окна выберите конфигурацию, расположение файла выходных данных которой нужно изменить (Отладка, Выпуск или Все конфигурации).
На странице найдите запись выходного пути— — она зависит от типа проекта.
Введите путь (абсолютный или относительный для корневого каталога проекта), по которому будут созданы выходные данные, или нажмите кнопку Обзор чтобы перейти к этой папке.
Для некоторых проектов в путь сборки по умолчанию включаются платформа и среда выполнения. Чтобы они не включались, в обозревателе решений щелкните узел проекта правой кнопкой мыши, выберите команду Изменить файл проекта и добавьте следующее:
Если выходные данные не создаются в указанном расположении, убедитесь, что выполняется сборка соответствующей конфигурации (например, Отладка или Выпуск), выбрав ее в строке меню Visual Studio.
Сборка в общий выходной каталог
По умолчанию Visual Studio создает каждый проект в отдельной папки внутри решения. Вы можете изменить пути вывода сборки для проекта, чтобы принудительно поместить все выходные данные в одну папку.
Помещение всех выходных данных решения в общий каталог
Щелкните один проект в решении.
В меню Проект выберите Свойства.
В зависимости от типа проекта откройте вкладку Компиляция или Сборка и задайте в поле Выходной путь папку, которую хотите использовать для всех проектов в решении.
Откройте файл проекта и добавьте следующее объявление свойства в первую группу свойств.
Задание параметру UseCommonOutputDirectory значения true указывает Visual Studio и его обработчику сборки MSBuild, что вы помещаете выходные данные нескольких проектов в одну папку, поэтому MSBuild будет пропускать этап копирования, которое обычно выполняется, если проекты зависят от других проектов.
Повторите шаги 1–4 для всех проектов в решении. Можно пропустить некоторые проекты в качестве исключения, если они не должны использовать общий выходной каталог.
Откройте файл проекта.
Добавьте следующее объявление свойства в первую группу свойств.
Можно использовать как относительный путь к файлу проекта, так и абсолютный. Если вы хотите указать имя проекта в пути, можно сделать ссылку на него с помощью свойств MSBuild $(MSBuildProjectName) и $(MSBuildProjectDirectory) . Другие доступные свойства см. в статье Зарезервированные и стандартные свойства MSBuild.
При сборке Visual Studio по-прежнему будет создавать папку "obj" в папке проекта, но она будет пуста. Ее можно удалить во время сборки. Чтобы сделать это, можно добавить событие после сборки для выполнения следующей команды:
Папка "obj" не будет создаваться при выполнении сборки из командной строки MSBuild.
Если ваше приложение пытается использовать неработающую ссылку, создается ошибка исключения. Неспособность найти компонент, на который указывает ссылка, является явным признаком ошибки, однако есть несколько ситуаций, в которых ссылка считается нерабочей. Эти варианты показаны в приведенном ниже списке:
Неверный или неполный путь для ссылок проекта.
Файл, на который указывает ссылка, удален.
Файл, на который указывает ссылка, переименован.
Сбой подключения к сети или проверки подлинности.
Ссылка указывает на COM-компонент, который не установлен на данном компьютере.
Ниже приведены способы устранения этих проблем.
Ссылки на файлы в сборках задаются по абсолютным путям в файле проекта. Таким образом, в локальном окружении пользователей, работающих с несколькими разработчиками, может отсутствовать сборка, на которую указывает ссылка. Чтобы избежать этих ошибок, в таких случаях лучше добавлять ссылки между проектами. Дополнительные сведения см. в разделе Программирование с использованием сборок.
Неправильный путь для ссылок
Если проекты используются совместно на разных компьютерах, некоторые ссылки могут быть не найдены, если компонент находится на этих компьютерах в разных папках. Ссылки сохраняются под именем файла компонента (например, MyComponent). Когда в проект добавляется ссылка, расположение папки для файла компонента (например, C:\MyComponents) добавляется к свойству проекта ReferencePath.
Чтобы устранить эту проблему, можно удалить неработающую ссылку и заменить в диалоговом окне Добавление ссылки. Другое решение заключается в том, чтобы использовать элемент Путь для ссылок на страницах свойств проекта и изменить папки в списке, указав правильное расположение. Свойство Путь для ссылок сохраняется для каждого пользователя на каждом компьютере. Таким образом, изменение пути для ссылок не затрагивает других пользователей проекта.
Ссылки между проектами лишены подобных проблем. Поэтому по мере возможности следует использовать их вместо ссылок на файлы.
Исправление неработающей ссылки проекта с помощью исправления пути для ссылок
В обозревателе решений щелкните правой кнопкой мыши узел проекта и выберите пункт Свойства.
Открывается конструктор проектов.
Если вы используете Visual Basic, выберите страницу Ссылки и нажмите кнопку Пути для ссылок. В диалоговом окне Пути для ссылок введите путь к папке с элементом, на который нужно сослаться, в поле Папка, а затем нажмите кнопку Добавить папку.
Файл, на который указывает ссылка, удален.
Вполне возможно, что файл, на который указывает ссылка, был удален и больше не существует на диске.
Исправление неработающей ссылки проекта для файла, который больше не существует на диске
Если ссылка находится в другом расположении на компьютере, считайте ее оттуда.
Файл, на который указывает ссылка, переименован.
Файл, на который указывает ссылка, мог быть переименован.
Исправление неработающей ссылки, указывающую на переименованный файл
Удалите ссылку, а затем добавьте ссылку на переименованный файл.
Если ссылка находится в другом расположении на компьютере, нужно считать ее оттуда.
Сбой подключения к сети или проверки подлинности
Недоступность файлов может быть вызвана несколькими возможными причинами, например ошибкой сетевого соединения или ошибкой проверки подлинности. В каждом отдельном случае могут использоваться уникальные средства восстановления. Например, вам может потребоваться обратиться к локальному администратору для получения доступа к необходимым ресурсам. Однако удаление ссылки и изменение использующего ее кода работает всегда.
На компьютере не установлен COM-компонент.
Компилятор создает ошибку C1083, когда не удается найти требуемый файл. Эта ошибка имеет несколько возможных причин. Наиболее распространенными причинами являются неверный путь поиска include или отсутствующие или неправильно именованные файлы заголовков, но другие типы файлов и проблемы могут также вызвать C1083. Ниже приведены некоторые распространенные причины, по которым компилятор создает эту ошибку.
Указано неверное имя файла
При вводе имени файла допущена ошибка. Например, примененная к объекту директива
может не найти файл, который вы хотели. Большинство файлов заголовков стандартной библиотеки C++ не имеют расширения h. . Чтобы устранить эту проблему, убедитесь, что указано правильное имя файла, как в следующем примере:
Файл не включен в путь поиска включаемых файлов
Это указывает компилятору искать файл в том же каталоге, который содержит исходный файл, а затем искать в других местах, заданных средой сборки. Если кавычки содержат абсолютный путь, компилятор выполняет поиск файла только в этом расположении. Если кавычки содержат относительный путь, компилятор выполняет поиск файла в каталоге относительно исходного каталога.
Если имя заключено в угловые скобки,
Если включаемые файлы находятся в другом каталоге относительно исходного каталога и в директивах Include используется относительный путь, то вместо угловых скобок следует использовать двойные кавычки. Например, если файл myheader.h заголовка находится в подкаталоге именованных заголовков проекта, в этом примере не удается найти файл и вызывается C1083:
но этот пример работает:
Проблемы с библиотекой сторонних производителей и vcpkg
если вы видите эту ошибку при попытке настроить библиотеку стороннего производителя в рамках сборки, рассмотрите возможность использования vcpkg, диспетчера пакетов C++ для установки и сборки библиотеки. vcpkg поддерживает большой и растущей список библиотек сторонних производителейи задает все свойства конфигурации и зависимости, необходимые для успешной сборки в рамках проекта.
Файл находится в проекте, но не в пути поиска включаемых файлов
Чтобы устранить эту проблему, исправьте путь, используемый компилятором для поиска включаемого или импортируемого файла. В новом проекте используются пути поиска include по умолчанию. Может потребоваться изменить путь поиска include, чтобы добавить каталог для проекта. При компиляции в командной строке добавьте путь к переменной среды include или /I параметр компилятора, чтобы указать путь к файлу.
чтобы задать путь к каталогу включения в Visual Studio, откройте диалоговое окно страницы свойств проекта. выберите VC++ каталоги в разделе свойства конфигурации в левой области, а затем измените свойство включаемые каталоги . дополнительные сведения о каталогах для отдельных пользователей и проектов, поиск которых выполняется компилятором в Visual Studio, см. в разделе страница свойств VC++ directories. Дополнительные сведения о параметре компилятора см. в /I разделе /I (дополнительные каталоги включаемых данных).
Не задана среда командной строки INCLUDE или LIB
Если компилятор вызывается из командной строки, для указания путей поиска часто используются переменные среды. Если путь поиска, описанный в переменной среды include или lib , задан неправильно, может быть сформирована ошибка C1083. Мы настоятельно рекомендуем использовать ярлык командной строки разработчика, чтобы задать базовую среду для сборок с командной строкой. Дополнительные сведения см. в разделе сборка C/C++ в командной строке. Дополнительные сведения об использовании переменных среды см. в разделе инструкции. Использование переменных среды в сборке.
Возможно, файл заблокирован или используется
Если для изменения или доступа к файлу используется другая программа, файл может быть заблокирован. Попробуйте закрыть файл в другой программе. иногда другая программа может быть Visual Studio сама по себе при использовании параметров параллельной компиляции. Если отключить параметр параллельной сборки, то эта ошибка исчезнет, а это проблема. Эта проблема также может быть вызвана другими системами параллельной сборки. Будьте внимательны при задании зависимостей файлов и проектов, чтобы порядок сборки был правильным. В некоторых случаях рекомендуется создать промежуточный проект для принудительного создания последовательности зависимостей для общего файла, который может быть создан несколькими проектами. Иногда антивирусные программы временно блокируют недавно измененные файлы для проверки. Если возможно, рассмотрите возможность исключения каталогов сборки проекта из антивирусного сканера.
Включена неправильная версия имени файла
Предкомпилированные заголовки еще не скомпилированы
Если проект настроен для использования предварительно скомпилированных заголовков, необходимо создать соответствующие .pch файлы, чтобы можно было скомпилировать файлы, использующие содержимое заголовка. например, pch.cpp файл ( stdafx.cpp в Visual Studio 2017 и более ранних версий) автоматически создается в каталоге проекта для новых проектов. Сначала необходимо скомпилировать этот файл, чтобы создать предкомпилированные файлы заголовков. В типичном проекте процесса сборки это выполняется автоматически. Дополнительные сведения см. в разделе Создание предкомпилированных файлов заголовков.
Дополнительные причины
Вы установили пакет SDK или библиотеку стороннего производителя, но после установки пакета SDK или библиотеки не открывали новое окно командной строки разработчика. Если пакет SDK или библиотека добавляет файлы в путь поиска включаемых файлов, может потребоваться открыть новое окно командной строки разработчика, чтобы получить эти изменения переменных среды.
Файл использует управляемый код, но параметр /clr компилятора не указан. Дополнительные сведения см. в разделе /clr (компиляция среды CLR).
Файл компилируется с использованием другого /analyze параметра компилятора, чем используется для предварительной компиляции заголовков. При предварительной компиляции заголовков для проекта все должны использовать одни и те же /analyze Параметры. дополнительные сведения см. в разделе /analyze (Code Analysis).
файл или каталог был создан подсистема Windows для Linux, учитывается регистр в каждом каталоге, и указанный регистр пути или файла не соответствует регистру пути или файла на диске.
Файл, каталог или диск доступен только для чтения.
Visual Studio или средства командной строки не имеют достаточных разрешений для чтения файла или каталога. это может произойти, например, когда файлы проекта имеют разные права владения, чем процесс, выполняемый Visual Studio или программ командной строки. иногда эту ошибку можно устранить, запустив Visual Studio или командную строку разработчика от имени администратора.
Недостаточно дескрипторов файлов. Закройте часть приложений и повторите компиляцию. Эта ситуация маловероятна в обычных условиях. Однако она может возникать при построении крупных проектов на компьютере с ограниченной физической памятью.
Пример
В следующем примере создается ошибка C1083, если файл "test.h" заголовка не существует в исходном каталоге или в пути поиска include.
Сведения о том, как создавать проекты C/C++ в интегрированной среде разработки или в командной строке, а также сведения о настройке переменных среды см. в разделе проекты и сборки систем.
Я пытаюсь получить путь к файлу изображения, который я добавил в Обозреватель решений в Visual Studio, но я не мог получить относительный путь к этому изображению. H-это файловая структура моего проекта:
Я могу получить изображение, как это :
но я должен быть в состоянии сделать что-то вроде :
Я думаю, что я не знаю точный синтаксис этого, поэтому я не могу получить изображение. : (
когда вы хотите использовать какой-либо внешний файл, есть, конечно, способ поместить их в папку внутри вашего проекта, но не так действителен, как получение их из ресурсов. В обычном проекте Visual Studio, вы должны иметь под Properties раздел, если нет, вы можете легко добавить свой собственный . И добавьте в него любой файл, вы можете перейти к пошаговому руководству по добавлению файлов ресурсов в свой проект здесь.
после имея файлы ресурсов в вашем проекте, вызывать их легко следующим образом:
конечно, вы должны добавить using Properties оператор как это:
Я немного опоздал, и я не уверен, что это то, что вы ищете, но я подумал, что добавлю его на всякий случай, если кто-то еще найдет его полезным.
предположим, что это ваша файловая структура:
нужно написать свой путь относительно . Итак, вы хотите получить доступ Folder.ico в своем Main.cs вы можете использовать:
это, казалось, работало для меня!
опустить "~\":
~\ ничего не значит с точки зрения файловой системы. Единственное место, которое я видел, что правильно используется в веб-приложении, где ASP.NET заменяет Тильду абсолютным путем к корню приложения.
обычно можно предположить, что пути относятся к папке, в которой находится EXE. Кроме того, убедитесь, что изображение указано как "содержимое" и "копировать, если новее"/ "копировать всегда" на вкладке свойств в Visual Студия.
Я также встретил ту же проблему, и я был в состоянии получить его до конца. Поэтому позвольте мне объяснить шаги, которые я применил. Я объясню это по вашему сценарию.
согласно моему методу нам нужно использовать класс "Path" и класс "Assembly", чтобы получить относительный путь.
Итак, первый импорт System.IO и система.Отражение в использовании операторов.
введите приведенный ниже код.
на самом деле выше данной строки хранится путь выходной каталог вашего проекта.(Здесь каталог 'output' относится к Debug папка вашего проекта).
Теперь скопируйте каталог FolderIcon в папку отладки. Затем введите нижеприведенную строку.
Теперь эта переменная 'iconPath' содержит весь путь к вашей папке.ico. Теперь все, что вам нужно сделать, это хранить в строковой переменной. Используйте ниже данной строки для этого.
Теперь вы можете использовать эту строковую переменную icon_path в качестве ваш относительный путь к значку.
спасибо.
Я думаю, что с помощью этого будет легче
или этот код будет работать на любой машине, если ваша папка находится в корне проекта, если вы хотите изменить его. просто измените этот раздел @"..\"
Читайте также: