У меня есть решение, которое содержит много проектов C#, как я могу быстро изменить конфигурацию всех проектов, например, я хочу изменить выходную папку из bin в MyBin. Я знаю, что лист свойств C++ может делать аналогичную вещь, но у C# нет листа свойств.Как настроить весь проект C# в решении
ответ
Вы можете использовать общий файл с частичным проектом для хранения обычных вещей.
Переместить все материалы, которые вы хотите изменить одновременно, в автономный .proj-файл, например. common.proj
:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<OutputPath>Debug</OutputPath>
<Platform>AnyCPU</Platform>
</PropertyGroup>
</Project>
чем использование MSBuild import заявление на «включить» общую часть в каждом проекте в вашем решении:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="common.proj" />
</Project>
MsBuild импорта работать более или менее таким же образом, как C++ включает в себя: перед проект построен, все директивы импорта заменяются содержимым импортированного файла. Теперь вы можете изменить свои общие свойства только в одном файле. common.proj
Есть одна важная вещь, которая стоит упомянуть: VS кэши включают файлы проекта, поэтому вам придется перезагрузить все проекты после внесения изменений в файл common.proj
(так что я предлагайте строить из командной строки при активном изменении commom.proj
)
Мы используем этот подход для управления параметрами анализа кода (поскольку они должны быть одинаковыми во всех проектах в решении).
Большое спасибо за вашу помощь! –
Вы должны определить новые Build Configuration
, которые могут быть скопированы из Release или Debug или составным все вручную. После того, как вы сможете настроить для каждого проекта, это опция в отношении этой пользовательской сборки, которую вы только что создали, и вы сделали. Это делается, естественно, только один раз. После того, как вы выберете эту настраиваемую сборку, все свойства, выбранные для каждого отдельного проекта в решении, будут установлены с требуемыми свойствами.
Если я правильно прочитал OP, он не хочет делать это на основе каждого проекта , он хочет настроить все проекты за один раз. –
@ Moo-Juice: да. BUt это способ сделать это. Вы * один раз *, которые делают для каждого отдельного проекта в решении, и после того, как все работает, просто переключение между различными параметрами конфигурации. – Tigran
Tigran - да, это так, но только если вы хотите ограничить себя VS UI. Если вам неинтересно, и если вы понимаете, как VS Projects и MSBuild связаны друг с другом, вам действительно не нужно и весь набор новых вариантов открыт для вас. То, что VS UI дает вам по умолчанию, не всегда является лучшим, и иногда нужно выполнить некоторую настройку. На самом деле это довольно легко. – quetzalcoatl
- Щелкните правой кнопкой мыши на все проекты в решении, один за другим.
- Нажмите «выгрузить» на каждом
- затем нажмите кнопку «редактировать XXX.csproj» снова на всех из них
Теперь у вас есть много XMLs открыли в виде текстовых файлов.
Теперь используйте Найти & Заменить (Ctrl + Shift + H, если вы используете ярлыки по умолчанию), и установите:
- Найти что:
OutputPath>bin\Debug</OutputPath
- заменить:
MyBin\Debug
- Посмотрите в:
All open documents
и hit Replace All
.
Затем сделайте то же самое с bin\Release
и MyBin\Release
.
Затем сохраните все XML-файлы, затем щелкните правой кнопкой мыши по каждому проекту и выберите «перезагрузить».
Вы можете сделать то же самое в любом текстовом редакторе или в любой из найденных команд командной строки & заменить утилиту вроде sed
. Если вы какой-либо другой, используйте их вместо этого - это избавит вас от повторного выбора/разгрузки всех проектов.
Вы также можете использовать тот факт, что CSPROJs являются только файлами MSBuild, поэтому вы можете создать сценарий MSBuild с конфигурацией, который будет включен в каждый из ваших проектов C#, и который будет определять дополнительные переменные, такие как «общий путь вывода» и т. Д. Но, хотя это, безусловно, работает (я сделал это несколько раз), он, скорее всего, испортит некоторые PropertySheets в VS UI самым естественным способом, например, если вы используете это для переопределения/настройки OutputPaths, тогда VS UI wil отображает пустые или сломанные выходные пути и пытается использовать VS UI для их исправления/изменения, в свою очередь перезаписывает ваши интеллектуальные настройки, которые читают их из общего конфигурационного файла. Очевидно, не так ли.
EDIT: здесь быстро объясняется: Partial .csproj Files, однако, пожалуйста, прочитайте мои комментарии ниже, на всякий случай.
Большое спасибо за ваш ответ. Я знаю, как изменить конфигурацию, отредактировав файл проекта xml, и я также знаю, как их изменить в VS GUI. То, что я хочу достичь, - это изменить простое значение, а затем все проекты, использующие значение, будут изменены, например, изначально я использую .NET framework 4.0 для всех проектов, и теперь я хочу использовать 4.5 –
Единственный способ сделать это как я уже сказал, используя директиву MSBuild «import» в файле .csproj. Вы создадите дополнительный файл «полупроекта», который установит некоторые общие свойства, и каждый из ваших проектов «включит» этот специальный файл. См. Эту тему: http://stackoverflow.com/questions/157149/partial-csproj-files Соблюдайте и внимательно следите за тем, что они говорят о «наиболее полученных» файлах. Если projectA включает projectB, который включает projectC, и если projectD также включает ProjectC, тогда вы должны ** ** ** иметь projectA и projectD, присоединенные к Solution в VS IDE. – quetzalcoatl
Обратите внимание, что для дополнительного проектаB и projectC НЕ нужно заканчивать на .csproj. Вы можете «включить» любой файл, который находится в правильном формате XML/MSBuild. Это означает, что вы можете назвать их по-разному и включить их в решение тоже, но НЕ как проекты, а скорее как простые XML-файлы. Это упростит их редактирование. Тем не менее, вы все равно должны быть очень осторожны: VS IDE часто не замечает изменений, внесенных вами в эти дополнительные файлы, если вы не перезагрузите решение/projectA/projectD. Fortunatelly, это только проблема с IDE. Опция «Build» всегда будет читать все правильно. – quetzalcoatl
- 1. Ссылка на проект веб-службы C# непосредственно в решении C#
- 2. Как настроить Linux-проект C++ в Eclipse?
- 3. Как настроить тестируемый C проект в Eclipse
- 4. Как заставить Stylecop игнорировать проект в решении?
- 5. Makefile.am перестраивает весь проект
- 6. Как настроить проект ворчания?
- 7. CMake как настроить этот проект на C++?
- 8. Любой процессор недоступен в решении C++/C#
- 9. Как упаковать весь проект ROS
- 10. Как настроить проект SCSS?
- 11. Mercurial, Разделить каждый проект в решении?
- 12. Как настроить проект VB?
- 13. Добавить проект в решении с помощью NuGet
- 14. Как настроить новый проект
- 15. Как настроить проект maven?
- 16. Проект Xamarin.Mac в решении Xamarin.Forms (Portable)
- 17. Запуск CPPlint на весь проект
- 18. PHP set_error_handler весь проект
- 19. ASP.NET Multiple проект в одном решении
- 20. Grails Rebuilds весь проект
- 21. Как сохранить весь проект в python
- 22. как дублировать весь проект в VB
- 23. Как переименовать весь проект в VC++ 2005
- 24. Как запустить весь проект в Гогланде?
- 25. Как встроить весь проект в файл phar?
- 26. Авто импорт в весь проект
- 27. CI Развертывание проекта Azure Functions в решении, содержащем веб-проект
- 28. Объединение C# и C++ в решении VisualStudio
- 29. весь проект откат, новый проект ушел Git
- 30. Как настроить проект Eclipse C для принятия C++ включает
Вы можете искать и заменять все файлы csproj. – theoutlander
Является ли это стандартным решением для моей проблемы? –
Да ... Потому что на самом деле нет интерфейса. Традиция .NET - это просто использовать каталоги 'bin' и' obj'. –