MsBuild - перенести в другую папку?
Дано:
- Сервис работающий под IIS
- MsBuild из Студии 2022
Требуется - запустить MsBuild из-под IIS жестко ограничив доступ к ресурсам системы.
Решение
- создаем IIS-юзера с правами на чтение и выполнение
- копируем MsBuild в отдельную папочку и даем на нее права созданному юзеру
Дальше утыкаемся в то, что для MsBuild требуются дополнительные либы... эээ... в мелкомягком проекте ссылок на них вроде нет...
Ну да ладно - что запрашивает - копируем в ту же папочку.
Наконец перестает спрашивать... но солюшник - не компилит - отваливается
C:\Users\Murr>C:\Projects\RunFromIIS\Apps\msbuild.exe C:\Projects\Dummy\AppendXML\appendxml.slnMicrosoft (R) Build Engine version 17.1.0+ae57d105c for .NET FrameworkCopyright (C) Microsoft Corporation. All rights reserved.Building the projects in this solution one at a time. To enable parallel build, please add the "-m" switch.Build started 29/10/23 12:20:34.C:\Projects\Dummy\AppendXML\appendxml.sln.metaproj(2,10): error MSB4132: The tools version "Current" is unrecognized. Available tools versions are "2.0", "3.5", "4.0".Build FAILED.C:\Projects\Dummy\AppendXML\appendxml.sln.metaproj(2,10): error MSB4132: The tools version "Current" is unrecognized. Available tools versions are "2.0", "3.5", "4.0".0 Warning(s)1 Error(s)Time Elapsed 00:00:00.52
Видимо не все дллки или их конфиги на месте
Вопросик такой - Чем сейчас удобнее всего получить список дллок которые нужно запихать в папку с MsBuild чтобы гарантировать его полную работоспособность? Ээээ... лишних - не надо - только необходимый минимум из тех что не зашарены...
Нее, там при запуске только моргает что-то и закрывается окошко...
Блин, полностью скопировал всю папку с MsBuild... вроде большая часть отработала... по крайней мере написала что ребуилд не нужен... и все же - завалилась...
Вот думаю - есть ли смысл посмотреть что там мелкомягкие как станалоне предлагают?
Опсс... довыпендрючивался... при запуске ГитХабДесктоп имею сообщение что он не может получить доступ к менеджеру виртуальной памяти....
А зачем всё копировать?
-----
Ну вроде как выше спрашивал как взять минимально необходимое.
Пока не выверено что необходимо - беру все.
Отчего не поручить это проге, которая будет вызывать билд
-----
IIS будет вызывать - там заморочек с вызовом и так с горбом.
А оставлять по месту в купе с полной студией, при условии что запускать будет внешний юзер - да ну его нафиг... мне бы голый MsBuild.
И что свой pipeline делаем?
------
Не, по проще...
IIS будет вызывать - там заморочек с вызовом и так с горбом.
ну если можешь вызывать билд с его параметрами, то в чем проблема с другой прогой?
при условии что запускать будет внешний юзер - да ну его нафиг
Не въезжаю... проге передаем только то что нужно бильдить. Билду передавать много больше.
Как вариант с меньшим количеством возможностей может быть хуже того что с большим?
в чем проблема с другой прогой?
------
В том, что ее тоже могут попытаться выполнить... включая произвольный свеженький скомпилированный код.
Как вариант с меньшим количеством возможностей может быть хуже того что с большим?
-----
Когда в процессе можно будет добавить.
Ничего не понимаю
1.
"C:\Program Files\Microsoft Visual Studio\2022\Community\Msbuild\Current\Bin\msbuild.exe" C:\Projects\Dummy\AppendXML\appendxml.sln
2.
C:\Projects\RunFromIIS\Current\Bin\msbuild.exe C:\Projects\Dummy\AppendXML\appendxml.sln
1. стандартное положение MsBuild после инсталляции Студии
2. копия папки C:\Program Files\Microsoft Visual Studio\2022\Community\Msbuild\Current - т.е. MsBuild сам по себе
Как видно - обрабатывается один и тот же солюшник (с двумя проектами внутри)
В случае 1. - все стандартно отрабатывает, ошибок нет.
Done Building Project "C:\Projects\Dummy\AppendXML.Tests\AppendXML.Tests\AppendXML.Tests.csproj" (default targets).Done Building Project "C:\Projects\Dummy\AppendXML\appendxml.sln" (default targets).Build succeeded.0 Warning(s)0 Error(s)
В случае 2.
Project "C:\Projects\Dummy\AppendXML\appendxml.sln" (1) is building "C:\Projects\Dummy\AppendXML.Tests\AppendXML.Tests\AppendXML.Tests.csproj" (3) on node 1 (default targets).C:\Projects\RunFromIIS\Apps\Bin\Microsoft.Common.CurrentVersion.targets(1815,5): error MSB4036: The "GetReferenceNearestTargetFrameworkTask" task was not found. Check the following:
1.) The name of the task in the project file is the same as the name of the task class.
2.) The task class is "public" and implements the Microsoft.Build.Framework.ITask interface.
3.) The task is correctly declared with <UsingTask> in the project file, or in the *.tasks files located in the "C:\Projects\RunFromIIS\Current\Bin\" directory. [C:\Projects\Dummy\AppendXML.Tests\AppendXML.Tests\AppendXML.Tests.csproj]Done Building Project "C:\Projects\Dummy\AppendXML.Tests\AppendXML.Tests\AppendXML.Tests.csproj" (default targets) -- FAILED.Done Building Project "C:\Projects\Dummy\AppendXML\appendxml.sln" (default targets) -- FAILED.
Видимо где-то в таргетсах некорректно заданы пути. Долбаки мелкомягкие...
Все перекапывать и править? Нее, ну его нафиг... надо лепить свои обкладки... тем более что задачи у меня несколько другие...
Хотя... блин... Я же не хочу писать код - хочу чтобы работал MsBuild, в том числе и на компиляции...