Как конвертировать sln в exe
Привет.
Уже тему поднимал, только ее удалили, не ответив (или перенесли? если так, извиняюсь за дубликат)
Мне необходимо из консоли собирать MSVS2005/2010 проекты (их до 5+) и все в одном sln
Использую MSBuild для этих целей. все прекрасно работает, только одно НО:
у меня в настройках стоит кастомный путь для бинарников (/bin//) и мусора от компиляции (/tmp//).
Если собирать в студии, то все ок.
При компилировании с помощью MSBuild (версия 2.0.5..) корневой путь меняется на корень подпроекта. Т.е. в итоге иерархия подпроекта /bin// создается не в , а в папке проекта.
В параметрах не нашел ничего подходящего, кроме OutDir. Но ее изменение не приводит ни к каким изменениям
делал так: /p:OutDir=
Спасибо за ответы
Re: $(SolutionDir)
От: | Qbit86 | https://twitter.com/qbit86 |
Дата: | 19.08.11 09:40 | |
Оценка: |
Здравствуйте, Аноним, Вы писали:
А>у меня в настройках стоит кастомный путь для бинарников (/bin//) и мусора от компиляции (/tmp//).
А>Если собирать в студии, то все ок.
А>При компилировании с помощью MSBuild (версия 2.0.5..) корневой путь меняется на корень подпроекта. Т.е. в итоге иерархия подпроекта /bin// создается не в , а в папке проекта.
У меня сборка идёт в $(SolutionDir)Bin\$(Configuration)\. Если собираю из Студии, то переменная $(SolutionDir) определена. Если собираю без Студии, то команде MsBuild.exe передаю эту переменную (/p:SolutionDir=. ) на вход, так как она не определена.
Глаза у меня добрые, но рубашка — смирительная!
Re: Автоматическая сборка проекта
От: | Аноним |
Дата: | 19.08.11 09:43 |
Оценка: |
Файл sln лежит в , в то время, как vcproj лежат в /
Еще добавлю, что в проектах настройки такие: $(SolutionDir)bin\
Можно хоть как-то во время сборки изменить значение $(SolutionDir)?
Re[2]: $(SolutionDir)
От: | Аноним |
Дата: | 19.08.11 10:08 |
Оценка: |
Здравствуйте, Qbit86, Вы писали:
Q>У меня сборка идёт в $(SolutionDir)Bin\$(Configuration)\. Если собираю из Студии, то переменная $(SolutionDir) определена. Если собираю без Студии, то команде MsBuild.exe передаю эту переменную (/p:SolutionDir=. ) на вход, так как она не определена.
Пробовал уже — не работает. Передаю /p:SolutionDir=
Все равно создает каталоги не в
А можно посмотреть остальные параметры, с которыми у вас работает компиляция?
Re[3]: $(SolutionDir)
От: | Qbit86 | https://twitter.com/qbit86 |
Дата: | 19.08.11 10:16 | |
Оценка: |
Здравствуйте, Аноним, Вы писали:
А>А можно посмотреть остальные параметры, с которыми у вас работает компиляция?
Ничего особенного. Например:
/p:Configuration=Debug /p:FxCopInspection=true /p:NUnitInspection=true /p:WarningsAsErrors="1572,1573,1734,1587,1591" /p:SolutionDir=$(WorkingDirRoot)MyProject\ /verbosity:normal /noconlog
$(WorkingDirRoot) здесь — это переменная, определённая в проекте CruiseControl, равна E:\Users\AccountForPerformingBuilds\.
Глаза у меня добрые, но рубашка — смирительная!
Re[4]: $(SolutionDir)
От: | Аноним |
Дата: | 19.08.11 10:34 |
Оценка: |
Здравствуйте, Qbit86, Вы писали:
У меня так не работает.
Нашел костыль — скриптом генерирую sln файл нужной конфигурации и его выполняю в нужной директории (где оригинальный sln).
В итоге все получается нормально.
А есть ли вариант из sln исключить один из проектов при компиляции? тогда ничего не пришлось и генерировать.
Re[5]: $(SolutionDir)
От: | Qbit86 | https://twitter.com/qbit86 |
Дата: | 19.08.11 10:40 | |
Оценка: |
Здравствуйте, Аноним, Вы писали:
А>А есть ли вариант из sln исключить один из проектов при компиляции? тогда ничего не пришлось и генерировать.
MsBuild-скрипты — это csproj-файлы, а sln-файл — это левая legacy фигня непонятного формата. Можно обойтись вовсе без неё. Например, вроде есть утилита, которая по sln-файлу позволяет сгенерировать MsBuild-скрипт. Или можно на вход системы сборки просто передать «источник зависимостей», скажем, MyLib.Demo.csproj, который зависит от MyLib.csproj, которая потянет за собой сборку MyLib.Core.csproj, etc.
Глаза у меня добрые, но рубашка — смирительная!
Re[6]: $(SolutionDir)
От: | Аноним |
Дата: | 19.08.11 11:10 |
Оценка: |
Здравствуйте, Qbit86, Вы писали:
Q>Здравствуйте, Аноним, Вы писали:
А>>А есть ли вариант из sln исключить один из проектов при компиляции? тогда ничего не пришлось и генерировать.
Q>MsBuild-скрипты — это csproj-файлы, а sln-файл — это левая legacy фигня непонятного формата. Можно обойтись вовсе без неё. Например, вроде есть утилита, которая по sln-файлу позволяет сгенерировать MsBuild-скрипт. Или можно на вход системы сборки просто передать «источник зависимостей», скажем, MyLib.Demo.csproj, который зависит от MyLib.csproj, которая потянет за собой сборку MyLib.Core.csproj, etc.
Мне нужно выборочно делать сборку подпроектов. Легче сгенерировать sln файл на 10 строчек, чем то, что выдает этот конвертер.
Просто хочется еще проще. кстати, проект С++
Re[7]: $(SolutionDir)
От: | Qbit86 | https://twitter.com/qbit86 |
Дата: | 19.08.11 11:20 | |
Оценка: |
Здравствуйте, Аноним, Вы писали:
А>Просто хочется еще проще. кстати, проект С++
Хм. С++-проекты в последней версии Студии (vcprojx) — это msbuild-скрипты; а проекты предыдущих версий (vcproj) — это скрипты устаревшей deprecated системы сборки vcbuild. К ним сказанное мной выше неприменимо.
Ничего не понимаю — как упаковать все в exe’шник?
Я ничего не понимаю. как скопировать в Visual Studio файлы (шейдеры, картинки) в exe файл?
Мне нужно чтобы как можно меньше торчало файлов в открытом виде.
Таких файлов разумеется очень много и разложены по директориям.
#1
16:30, 17 окт 2016
viennahd
> Я ничего не понимаю. как скопировать в Visual Studio файлы (шейдеры, картинки) в exe файл?
Shift+Alt+A. Когда добавишь, нажми правой кнопкой мыши на файле и выбери Свойства. А там уже укажи тип.
#2
16:41, 17 окт 2016
Но это добавляет в сам проект (sln), но никак не решает проблему самого exe и скрытия файлов.
То есть мне нужно укомплектовать и утрамбовать.
#3
16:48, 17 окт 2016
viennahd
Те файлы, которые ты добавил как я писал выше, зайди в их свойства. У них там может стоять в пункте Тип элемента значение Не участвовать в сборке. Поменяй его)
#4
16:53, 17 окт 2016
И еще проблему усложняет то что шейдеры создаются сторонней утилой, и ее тоже нужно трамбовать.
#5
16:57, 17 окт 2016
И да, я не знаю кем являются dll, glsl и т.д.
Оказывается нужно знать какого типа, и не определенность не допускается.
Получается что любой файл из папки bin никак не может быть файлом dll.
И выходит шейдеры могут быть только в открытом виде?!
Хреновый Windows.
#6
17:13, 17 окт 2016
Можно спрятать файлы данных. Но для этого надо пользоваться альтернативными файловыми системами, реализуемыми в некоторых библиотеках или делать свою такую. С альтернативной файловой системой должны уметь работать все используемые инструменты. Если движок твой, самописный, это не проблема. В чужом движке надо смотреть, может у него есть своя файловая система.
Практически все игры так и реализуются, если они не хранят свои данные в открытом виде, в сотнях тысяч мелких файлов.
Некоторые типы файлов нельзя прятать, потому как API может работать только с файлом, а не с поставляемыми программой данными. Пример такого формата — avi.
#7
17:17, 17 окт 2016
У меня проект-самопал, разве что sfml.
#8
17:22, 17 окт 2016
если самопал, бери какой-нибудь boost-file-system. Впрочем, не обязательно именно его, аналоги гуляют буквально повсюду, в том числе и написанные для одного-двух проектов.
#9
17:27, 17 окт 2016
Один большой файл данных скорее всего все равно будет. Можешь сделать его сколь угодно зашифрованным, но часто его содержимое делают просто zip-архивом.
Теоретически можно прилепить данные внутрь экзешника, но это очень неудобно и непопулярно. Захочешь так сделать — не факт что найдешь готовый инструмент, придется возиться самому.
#10
17:52, 17 окт 2016
const char data_shaders_pbr_shader_frag[] = ". ">;
const uint8_t data_tex_level1_floor[] = 0x12, 0x15. >;
всё это в h-файлах и инклудится в один.
sfml поддерживает чтение из памяти, просто вместо имени файла скармливаешь ему этот указатель (ну и там функция будет по-другому называться).
Написать конвертер в такой вид из обычных файлов — ну дело дня максимум.
Правда экзешник вырастет на размер всех этих файлов, но я так понимаю ты к этому готов.
#11
17:56, 17 окт 2016
viennahd
Файл ресурсов гугли res\rc. В студии с этим добром есть интеграция, так что все сможешь добавить мышкой. Если же ты фанат автоматизации — просто сгенерируй этот файл своей тулзой.
#12
19:54, 17 окт 2016
А можно ли запаковать шейдеры, картинки и т.д. в ZIP или еще какой-нибудь архив, и уже оттуда грузить?
Но что делать с dll, которых не мало?
#13
20:27, 17 окт 2016
viennahd
> А можно ли запаковать шейдеры, картинки и т.д. в ZIP или еще какой-нибудь архив, и уже оттуда грузить?
Куда угодно можно, хоть в архив, хоть в ресурсы экзешника, хоть в константный массив. Что хочешь — то и делаешь, в зависимости от того, что тебе нужно.
> Но что делать с dll, которых не мало?
Не делай dll, закажи статическую компоновку при компиляции.
#14
20:38, 17 окт 2016
У меня статики жалуются на не разрешенные символы. от SFML.
Этот SFML все равно понужает на DLL, особенно жадничиет на libjpeg, и boost.
Есть ли способ выкинуть нахрен этот SFML не причиняя ущерб png и текстурам?
Файл решения (SLN)
Область применения:Visual Studio Visual Studio для Mac
Visual Studio Code
Решение — это структура для организации проектов в Visual Studio. Решение поддерживает сведения о состоянии проектов в двух файлах:
- SLN-файл (текстовый, общий)
- Suo-файл (двоичные, пользовательские варианты решения)
Дополнительные сведения о файлах SUO см. в файле параметров пользователя решения (SUO).
Если VSPackage загружается из-за ссылки в SLN-файле, среда вызывает ReadSolutionProps чтение в SLN-файле.
Sln-файл содержит текстовые сведения, используемые средой для поиска и загрузки параметров значения имени для сохраненных данных и проекта VSPackages, на которые он ссылается. Когда пользователь открывает решение, среда циклит через preSolution Project sln-файл и postSolution информацию в SLN-файле для загрузки решения, проектов в решении и всех сохраненных сведений, подключенных к решению.
Файл каждого проекта содержит дополнительную информацию, считываемую средой, чтобы заполнить иерархию элементами этого проекта. Сохраняемость данных иерархии управляется проектом. Данные обычно не хранятся в SLN-файле, хотя вы можете намеренно записывать сведения о проекте в SLN-файл, если вы решили это сделать. Дополнительные сведения о сохраняемости см. в разделе «Сохраняемость проекта» и «Открытие и сохранение элементов проекта».
Заголовок файла
Заголовок SLN*-файла выглядит следующим образом:
Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 16 VisualStudioVersion = 16.0.28701.123 MinimumVisualStudioVersion = 10.0.40219.1
Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 17 VisualStudioVersion = 17.2.32505.173 MinimumVisualStudioVersion = 10.0.40219.1
Определения
Microsoft Visual Studio Solution File, Format Version 12.00
Стандартный заголовок, определяющий версию формата файла.
# Visual Studio Version 16
Основная версия Visual Studio, которая (последнее) сохранила этот файл решения. Эти сведения управляют номером версии в значке решения.
VisualStudioVersion = 16.0.28701.123
Полная версия Visual Studio, которая (последнее) сохранила файл решения. Если файл решения сохраняется более новой версией Visual Studio с той же основной версией. Это значение не обновляется так, чтобы уменьшить объем обработки в файле.
MinimumVisualStudioVersion = 10.0.40219.1
Минимальная (старая) версия Visual Studio, которая может открыть этот файл решения.
Microsoft Visual Studio Solution File, Format Version 12.00
Стандартный заголовок, определяющий версию формата файла.
# Visual Studio Version 17
Основная версия Visual Studio, которая (последнее) сохранила этот файл решения. Эти сведения управляют номером версии в значке решения.
VisualStudioVersion = 17.2.32505.173
Полная версия Visual Studio, которая (последнее) сохранила файл решения. Если файл решения сохраняется более новой версией Visual Studio с той же основной версией. Это значение не обновляется так, чтобы уменьшить объем обработки в файле.
MinimumVisualStudioVersion = 10.0.40219.1
Минимальная (старая) версия Visual Studio, которая может открыть этот файл решения.
Текст файла
Текст SLN-файла состоит из нескольких разделов, помеченных GlobalSection следующим образом:
Project("") = "Project1", "Project1.vbproj", "" EndProject Global GlobalSection(SolutionNotes) = postSolution EndGlobalSection GlobalSection(SolutionConfiguration) = preSolution ConfigName.0 = Debug ConfigName.1 = Release EndGlobalSection GlobalSection(ProjectDependencies) = postSolution EndGlobalSection GlobalSection(ProjectConfiguration) = postSolution .Debug.ActiveCfg = Debug|x86 .Debug.Build.0 = Debug|x86 .Release.ActiveCfg = Release|x86 .Release.Build.0 = Release|x86 EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution EndGlobalSection GlobalSection(ExtensibilityAddIns) = postSolution EndGlobalSection EndGlobal
Чтобы загрузить решение, среда выполняет следующую последовательность задач:
- Среда считывает глобальный раздел SLN-файла и обрабатывает все разделы, помеченные preSolution . В этом примере файла существует одна из таких инструкций:
GlobalSection(SolutionConfiguration) = preSolution ConfigName.0 = Debug ConfigName.1 = Release
Project("") = "Project1", "Project1.vbproj", "" EndProject
Если какой-либо проект в решении, реализующего VSPackage, не удается загрузить, метод вызывается, а все проекты в решении игнорируют изменения, OnProjectLoadFailure внесенные во время загрузки. Для любых ошибок синтаксического анализа максимальное количество сведений сохраняется с файлами решения. В среде отображается диалоговое окно с предупреждением о том, что решение повреждено.
При сохранении или закрытии QuerySaveSolutionProps решения вызывается метод. Он передается в иерархию, чтобы узнать, были ли внесены изменения в решение, которое необходимо ввести в SLN-файл. Значение NULL, переданное в QuerySaveSolutionProps VSQUERYSAVESLNPROPS, указывает, что данные сохраняются для решения. Если значение не равно NULL, сохраненные сведения относятся к конкретному проекту, определенному указателем на IVsHierarchy интерфейс.
При сохранении IVsSolutionPersistence сведений интерфейс вызывается с указателем на SaveSolutionProps метод. Затем WriteSolutionProps метод вызывается средой для получения пар «имя-значение» из IPropertyBag интерфейса и записи сведений в SLN-файл.
SaveSolutionProps и WriteSolutionProps объекты вызываются рекурсивно средой, чтобы получить сведения, которые будут сохранены из IPropertyBag интерфейса, пока все изменения не будут введены в SLN-файл. Таким образом, вы можете убедиться, что информация будет сохранена в решении и доступна при следующем открытии решения.
Каждый загруженный VSPackage перечисляется, чтобы узнать, есть ли что-либо для сохранения в SLN-файле. Это только во время загрузки, когда запрашиваются разделы реестра. Среда знает обо всех загруженных пакетах, так как они находятся в памяти во время сохранения решения.
Только SLN-файл содержит записи в preSolution разделах и postSolution разделах. Аналогичные разделы в suo-файле отсутствуют, так как решение должно правильно загрузить эту информацию. Suo-файл содержит параметры, относящиеся к пользователю, такие как частные заметки, которые не предназначены для общего доступа или размещения в элементе управления исходным кодом.
См. также
- IVsPersistSolutionProps
- Файл параметров пользователя решения (SUO)
- Решения
Конвертер SLN
Asterisk PBX «подписал линейный» 8 кГц, 16-разрядный целочисленный, малоформатный формат.
Поддерживаемые Преобразования
Конвертировать из SLN | Конвертации | Рейтинг | |
1 | SLN в WAV | 4.7 | 120 голосов |
2 | SLN в MP3 | 4.8 | 44 голосов |
3 | SLN в AAC | 4.0 | 2 голосов |
4 | SLN в AU | 5.0 | 1 голосов |
5 | SLN в OGG | 4.0 | 1 голосов |
6 | SLN в RA | 5.0 | 1 голосов |
7 | SLN в W64 | 5.0 | 1 голосов |
8 | SLN в AC3 | ||
9 | SLN в FLAC | ||
10 | SLN в AIFF | ||
11 | SLN в AMR | ||
12 | SLN в M4A | ||
13 | SLN в M4R | ||
14 | SLN в WMA | ||
15 | SLN в DTS |
Конвертировать в SLN | Конвертации | Рейтинг | |
1 | MP3 в SLN | 4.8 | 167 голосов |
2 | WAV в SLN | 4.9 | 124 голосов |
3 | M4A в SLN | 4.6 | 19 голосов |
4 | OGG в SLN | 5.0 | 7 голосов |
5 | MP4 в SLN | 5.0 | 6 голосов |
6 | MPEG в SLN | 4.8 | 5 голосов |
7 | AMR в SLN | 5.0 | 4 голосов |
8 | AAC в SLN | 5.0 | 2 голосов |
9 | 3GP в SLN | 5.0 | 2 голосов |
10 | OPUS в SLN | 5.0 | 2 голосов |
11 | MOV в SLN | 5.0 | 1 голосов |
12 | GSM в SLN | 5.0 | 1 голосов |
13 | FLAC в SLN | 5.0 | 1 голосов |
14 | AAF в SLN | 4.0 | 1 голосов |
15 | WVE в SLN | 4.0 | 1 голосов |