Как конвертировать sln в exe
Перейти к содержимому

Как конвертировать sln в exe

Как конвертировать 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)

Область применения:yesVisual Studio Visual Studio для Mac noVisual Studio Code no

Решение — это структура для организации проектов в 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 голосов

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *