Что такое файлы.sln и.vcproj и что они содержат?

Я новичок в мире Visual Studio. Может кто-нибудь объяснить, что содержат эти два файла? Я знаю, что один из них содержит информацию о проекте, но как насчет другого?

5 ответов

Решение

Файл проекта (.vcproj / .vcxproj) содержит настройки того, как скомпилировать ваш код в DLL или двоичный файл, или что-то еще, что компоновщик может собрать в один модуль. Файл проекта - это просто XML-файл, который содержит параметры компилятора, параметры компоновщика и описывает, какие файлы вы хотите скомпилировать.

Файл решения - это текстовый файл, который группирует несколько файлов проекта.

Поэтому, если вы думаете об этом как о дереве, то у вас есть хорошее представление об этом:

.sln
   .vcproj
      .h
      .h
      .cpp
      .cpp
   .vcxproj
      .h
      .h
      .cpp
      .cpp
   .csproj
      .cs

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

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

Разница между файлами решения и файлами проекта заключается в том, что файл проекта содержит информацию, относящуюся к этому проекту, не зная о своем решении (хотя Visual Studio будет искать иерархию в некоторой степени, пытаясь найти соответствующее решение при открытии проекта, если один существует); файл решения знает обо всех проектах, которые являются частью этого решения, и ссылается на каждый из них (например, каталог файлов, если вам нравится, но с проектами), он также содержит информацию / конфигурацию для всего решения, которые могут быть применимы для всех проектов в рамках решения.

Как отметил Ханс Пассант, есть исключение: файлы для проектов C++ до VS2010 не являются файлами XML MSBuild, а представляют собой формат, документированный Microsoft на MSDN.

Файл.vcproj содержит информацию о том, КАК скомпилировать исходный код для цели (в основном, исполняемый файл). Во многих случаях очень важно иметь файл проекта для успешной компиляции, поэтому не удаляйте его. Он сопоставим с файлом.dsp (Visual Studio 6), файлом.prj (компиляторы Borland) или файлом Makefile (компиляторы Unix, GNU) и содержит пути и параметры командной строки компилятора / компоновщика.

Файл.sln - это просто набор из нескольких файлов.vcproj. Поскольку Visual Studio может автоматически создать его, если его нет, нет необходимости хранить его для распространения или архивирования. Это наследник файла.dsw (Visual Studio 6). Его имя "Файл решения" вводит в заблуждение ИМХО.

Вкратце: один для решения, а другой для проекта, и решение может содержать несколько проектов.

Visual Studio позволяет использовать несколько проектов в одном решении. Данные о том, какие проекты находятся в решении, находятся в файле sln (решение).

Другие вопросы по тегам