В VS 2008, есть ли способ установить промежуточную директорию (куда идут файлы .obj, а не конечные цели) в проекте C#?Установить промежуточную директорию в проекте C#
ответ
Я так не считаю. Тем не менее, вы можете скопировать ваши исполняемые файлы, dlls, что угодно, в другую папку в событии после сборки. (Вкладка «Сборка событий» в свойствах проекта)
Вам необходимо переопределить BaseIntermediateOutputPath msbuild var, подробнее об этом here.
Это работает по большей части, но я искал способ установить его в каждом проекте, поэтому построение из среды IDE не будет загрязнять исходную папку. Однако установка BaseIntermediateOutputPath в проекте вызывает предупреждение о безопасности. Увы, это не представляется возможным. вздох... –
Предупреждение о безопасности должно сообщить вам, что что-то необычное произошло, вы можете отключить предупреждение, и вы не увидите его снова, пока не измените что-то еще. –
нет ничего необычного в настройке промежуточного выходного местоположения. Visual Studio с радостью принимает проекты C++, настраивающие расположение промежуточных файлов (через свойство IntDir) без диалогового окна с предупреждением о безопасности, но при этом он запускает истерику, когда то же самое делается в проекте C#. –
Я нашел решение для этого с помощью Visual Studio Express 2013; Я забыл, какая версия VS представляет MSBuild, и я не могу точно сказать, что это будет работать для любой другой версии. Но здесь идет:
В C:\Windows\Microsoft.NET\Framework
являются поддиректориями, соответствующими версиям .NET; С VSX2013 в моей системе папка, представляющая интерес, - v4.0.30319
. (Это версия .NET, используемая MSBuild, а не та, на которую я нацелен.) В этой папке находятся файлы .targets
, которые являются коллекциями правил MSBuild.
В начале Microsoft.CSharp.targets
приведены некоторые правила, которые будут импортировать больше файлов правил. Третий из этих импортных операторов импортирует из файла, названного переменной построения CustomBeforeMicrosoftCSharpTargets
. Вы можете быть в состоянии выяснить имя, прочитав правила, но это легче добавить шаг пользовательского сборки
echo $(CustomBeforeMicrosoftCSharpTargets)
Строить и посмотрите на результат. В моем случае, полный путь был
C:\Program Files (x86)\MSBuild\v12.0\Custom.Before.Microsoft.CSharp.targets
Примечание: в моем случае, там уже папка C:\Program Files (x86)\MSBuild\12.0
но не v12.0
было.
Так (как администратор) я создал папку и положил Custom.Before.Microsoft.CSharp.targets
файл, который выглядит следующим образом:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<BaseIntermediateOutputPath>$(SolutionDir)\Build\$(MSBuildProjectName)</BaseIntermediateOutputPath>
</PropertyGroup>
</Project>
Примечание: $(ProjectName)
не работает, используйте $(MSBuildProjectName)
.
Когда я построил, то Objs были размещены в директории сборки под решением, а не в рамках проекта, в подкаталоге с типичным именованием: Debug
или Release
или x86\Debug
или x64\Release
.
Это не работает точно так, как хотелось бы: я действительно хотел разместить их в %TEMP%
, но переменная не была расширена, поэтому я закончил создание папки под проектом под названием %TEMP%
. Размещение расширенного пути в правиле работало просто отлично, но другие подпапки %APPDATA%
не удалось из-за проблем с разрешениями.
Я предполагаю, что это можно использовать для настройки любой из этих переменных; чтение файлов по умолчанию .TARGETS
- это тяжелая работа, но в нем есть полезные комментарии.
Еще одно примечание: вышеупомянутый подход работает для VS CE 2017. 'CustomBeforeMicrosoftCSharpTargets' имеет значение' C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Community \ MSBuild \ v15.0', и снова я пришлось создать папку 'v15.0'; никаких изменений, необходимых для XML. –
- 1. Установить начальную директорию JavaFX FileChooser
- 2. Как установить jenkins в определенную директорию?
- 3. Как установить часовую директорию? django
- 4. Restlet 2.3 Как установить временную директорию
- 5. Невозможно установить промежуточную среду для приложения Rails
- 6. phonegap установить корневую директорию для файлов активов
- 7. Как синхронизировать директорию из контейнера в директорию?
- 8. Установить текущую директорию JFileChooser на удаленный каталог
- 9. Как установить временную директорию при создании cyanogenmod
- 10. Установить общедоступную директорию за пределами rails app
- 11. Как удалить непустую директорию в C++?
- 12. Android - Завершить промежуточную активность
- 13. Удалить промежуточную фиксацию GIT
- 14. QValidator предотвращает промежуточную типизацию
- 15. Загрузить директорию шаблонов шаблонов в Twig
- 16. Maven установить в модульном проекте
- 17. Использование пакета C++ nuget в проекте C#
- 18. Как установить временную директорию для незавершенных загрузок в Wget?
- 19. install4j как отключить опцию «установить в другую директорию»
- 20. Усечь директорию в bash
- 21. Аннотировать промежуточную модель в Django
- 22. Установить директорию выходных данных без структуры каталога стиля Java
- 23. C# WPF установить построить недвижимость в проекте ими программного
- 24. Как установить «Html Agility Pack» в моем проекте C#?
- 25. Определить корневую директорию приложения
- 26. Как вставить промежуточную строку?
- 27. Как выбрать промежуточную парадигму
- 28. Переместить вспомогательную директорию в другую директорию с помощью camel
- 29. loadFromRemoteSources в проекте C++
- 30. npm выберите глобальную директорию установки
+1 для хорошего вопроса. Я попытался сделать то же самое по тем же причинам (не загрязнять исходный каталог с выходом компилятора) и не удалось (без диалогового окна предупреждения о безопасности, но это неприемлемо для меня). –
Кто-нибудь знает, изменилась ли эта ситуация в Visual Studio 2010/.NET4 ...? –