Поговорим о такой программе как MSBuild, для чего она и можно ли ее удалить. MSBuild является штатным инструментом сборки проекта и используется в редакторе Visual Studio (или SharpDevelop), это такая программа в которой разработчики создают другие программы — пишут код и компилируют потом. Но при этом возможно создавать программы и без этой студии, достаточно чтобы был сам Microsoft Build Engine (MSBuild). Также данный компонент помогает собирать конечные проекты с поддержкой платформы .NET, при этом как версии 2.0 так и более современной.
Если вы думаете как удалить MSBuild, то я этого не советую делать, а то могут возникнуть разные глюки через некоторое время. Могу дать совет — переименуйте папку например в …MSBuild_, поработайте пару дней за компом, если нет глюков можете удалить
Особого смысла писать подробно о том что за программа MSBuild нет, так как вряд ли вам будет интересно, это для программистов. Ну что интересно? Окей, тогда немного напишу. Вот смотрите, MSBuild запускается из командной строки таким образом — файл проекта передается модулю MSBuild.exe с определенными аргументами. В результате при помощи аргументов указываются свойства, задаются обьекты и средства для ведения журнала. Также этот модуль будет полезен для отображения в командной строке ошибок, предупреждений, сообщений.
Разработка приложения в проекте MSBuild при использовании среды разработки Visual Studio 2005:
Итак, какой можем сделать вывод о программе MSBuild?
- позволяет вести файл журнала с ошибками, предупреждениями и сообщениями при выполнении;
- обработка в пакетном режиме задач, обьектов, на основе метаданных;
- преобразование для дальнейшего анализа и эффективного построения проектов;
- интеграция с Visual Studio, где MSBuild отвечает за проект, поэтому можно использовать любой проект, который был собран с использованием MSBuild, даже если он был создан при помощи другого инструмента;
Модуль MSBuild может работать с файлами, расширения у которых соответствует шаблону .*proj.
Скорее всего папку вы нашли в Program Files, но вот какая штука, в эту папку, пользуясь тем что это системный компонент, может также поселится и вирус. Но если вдруг подозреваете, что это вирус… то тут лучше сразу проверить компьютер онлайн сканером, если будут вирусы, то он их найдет и после проверки вы их сможете удалить.
Как видите, интересного мало, это системная программа и папку ее как бы не желательно удалять, тем более что если она просто простаивает — то она никому не мешает и не нагружает процессор вообще никак.
Так вот, по поводу вирусов, если думаете что они поселились на компе — то нет вопросов, проверьте сперва инструментом AdwCleaner, а потом пройдитесь сканером Eset, я о нем писал тут (во второй половине статьи!).
На главную!
10.03.2016
Содержание:
- Расширение путиExtend the path
- License
- Причины ошибок в файле MSBuild.exe
- Создание минимального файла проекта MSBuildCreating a Minimal MSBuild Project File
-
- Создание файла минимального проекта MSBuildTo create a minimal MSBuild project file
-
- Çoklu sürüm desteğiMultitargeting
- Supplying Parameters to the VCC Build Tools
- Ayrıca bkz.See also
- ОбновленияUpdates
- 在命令提示符处使用 MSBuildUse MSBuild at a command prompt
- 请参阅See also
- Распространенные сообщения об ошибках в MSBuild.exe
- Bir komut isteminde MSBuild kullanmaUse MSBuild at a command prompt
- Новые функции свойствNew property functions
- Файлы, связанные с MSBuild.exe
-
- Файлы EXE, связанные с MSBuild.exe
-
- Usage
- Тестирование целей построенияTest the build targets
- Тестирование целей построенияTo test the build targets
Расширение путиExtend the path
Прежде чем использовать MSBuild, необходимо расширить переменную среду PATH, чтобы включить все необходимые средства.Before you can use MSBuild, you must extend the PATH environment variable to include all the required tools. Для этого можно использовать командную строку разработчика для Visual Studio.You can use the Developer Command Prompt for Visual Studio. В Windows 10 ее можно найти в поле поиска на панели задач Windows.Search for it on Windows 10 in the search box in the Windows task bar. Чтобы настроить среду в обычной командой строке или в среде скриптов, запустите файл VSDevCmd.bat, находящийся в подпапке Common7/Tools каталога, в котором установлено решение Visual Studio.To set up the environment in an ordinary command prompt or in a scripting environment, run VSDevCmd.bat in the Common7/Tools subfolder of a Visual Studio installation.
License
Copyright (c) 2016, LoreSoft
All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
- Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
- Neither the name of LoreSoft nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS «AS IS» AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Причины ошибок в файле MSBuild.exe
Проблемы MSBuild.exe могут быть отнесены к поврежденным или отсутствующим файлам, содержащим ошибки записям реестра, связанным с MSBuild.exe, или к вирусам / вредоносному ПО.
Более конкретно, данные ошибки MSBuild.exe могут быть вызваны следующими причинами:
- Поврежденные ключи реестра Windows, связанные с MSBuild.exe / Windows.
- Вирус или вредоносное ПО, которые повредили файл MSBuild.exe или связанные с Windows программные файлы.
- Другая программа злонамеренно или по ошибке удалила файлы, связанные с MSBuild.exe.
- Другая программа находится в конфликте с Windows и его общими файлами ссылок.
- Поврежденная загрузка или неполная установка программного обеспечения Windows.
Создание минимального файла проекта MSBuildCreating a Minimal MSBuild Project File
Теперь, когда у вас есть минимальный исходный файл приложения, вы можете создать минимальный файл проекта для построения приложения.Now that you have a minimal application source file, you can create a minimal project file to build the application. Такой файл проекта содержит следующие элементы.This project file contains the following elements:
-
Необходимый корневой узел .The required root node.
-
Узел для хранения элементов.An node to contain item elements.
-
Элемент, который ссылается на исходный файл приложения.An item element that refers to the application source file.
-
Узел для хранения задач, которые требуются для построения приложения.A node to contain tasks that are required to build the application.
-
Элемент для запуска компилятора Visual C# для построения приложения.A element to start the Visual C# compiler to build the application.
Создание файла минимального проекта MSBuildTo create a minimal MSBuild project file
В текстовом редакторе замените существующий текст с помощью следующих двух строк:In the text editor, replace the existing text by using these two lines:
Вставьте следующий узел в качестве дочернего элемента узла :Insert this node as a child element of the node:
Обратите внимание, что узел уже содержит элемент.Notice that this already contains an item element.
Добавьте узел в качестве дочернего элемента узла .Add a node as a child element of the node. Назовите узел .Name the node .
Вставьте следующий элемент задачи в качестве дочернего элемента узла .Insert this task element as a child element of the node:
Сохраните этот файл проекта и назовите его Helloworld.csproj.Save this project file and name it Helloworld.csproj.
Минимальный файл проекта должен выглядеть следующим образом:Your minimal project file should resemble the following code:. Задачи в целевом объекте сборки выполняются последовательно.Tasks in the Build target are executed sequentially
В этом случае задача компилятора Visual C# является единственной.In this case, the Visual C# compiler task is the only task. Она ожидает список исходных файлов для компилирования, который задается значением элемента .It expects a list of source files to compile, and this is given by the value of the item. Элемент ссылается на единственный исходный файл Helloworld.cs.The item references just one source file, Helloworld.cs
Задачи в целевом объекте сборки выполняются последовательно.Tasks in the Build target are executed sequentially. В этом случае задача компилятора Visual C# является единственной.In this case, the Visual C# compiler task is the only task. Она ожидает список исходных файлов для компилирования, который задается значением элемента .It expects a list of source files to compile, and this is given by the value of the item. Элемент ссылается на единственный исходный файл Helloworld.cs.The item references just one source file, Helloworld.cs.
Примечание
В элементе можно использовать подстановочный знак (*) для ссылки на все файлы, которые имеют расширение имени файла .CS:In the item element, you can use the asterisk wildcard character (*) to reference all files that have the .cs file name extension, as follows:
Тем не менее мы не рекомендуем использовать подстановочные знаки, так как это создает сложности при отладке и постановке выборочных задач в случае добавления или удаления исходных файлов.However, we do not recommend the use of wildcard characters because it makes debugging and selective targeting more difficult if source files are added or deleted.
Çoklu sürüm desteğiMultitargeting
Visual Studio ‘yu kullanarak, .NET Framework çeşitli sürümlerinden herhangi birini çalıştırmak için bir uygulamayı derleyebilirsiniz.By using Visual Studio, you can compile an application to run on any one of several versions of .NET Framework. Örneğin, bir uygulamayı 32 bit platformda .NET Framework 2,0 ‘ de çalışacak şekilde derleyebilir ve aynı uygulamayı bir 64-bit platformunda .NET Framework 4,5 üzerinde çalışacak şekilde derleyebilirsiniz.For example, you can compile an application to run on .NET Framework 2.0 on a 32-bit platform, and you can compile the same application to run on .NET Framework 4.5 on a 64-bit platform. Birden fazla çerçeveye derleme yeteneği Çoklu hedefleme olarak adlandırılır.The ability to compile to more than one framework is named multitargeting.
Çoklu hedefleme avantajlarından bazıları şunlardır:These are some of the benefits of multitargeting:
-
.NET Framework önceki sürümlerini hedefleyen uygulamalar geliştirebilirsiniz, örneğin 2,0, 3,0 ve 3,5 sürümleri.You can develop applications that target earlier versions of .NET Framework, for example, versions 2.0, 3.0, and 3.5.
-
Örneğin, Silverlight gibi .NET Framework dışındaki çerçeveleri hedefleyebilirsiniz.You can target frameworks other than .NET Framework, for example, Silverlight.
-
Hedef çerçevenin önceden tanımlanmış bir alt kümesi olan bir çerçeve profilinihedefleyebilirsiniz.You can target a framework profile, which is a predefined subset of a target framework.
-
Geçerli .NET Framework sürümü için bir hizmet paketi yayınlanmışsa, hedefleyebilirsiniz.If a service pack for the current version of .NET Framework is released, you could target it.
-
Çoklu hedefleme, bir uygulamanın yalnızca hedef çerçeve ve platformda kullanılabilir olan işlevleri kullanmasını güvence altına alır.Multitargeting guarantees that an application uses only the functionality that’s available in the target framework and platform.
Daha fazla bilgi için bkz. Çoklu hedefleme.For more information, see Multitargeting.
Supplying Parameters to the VCC Build Tools
You can pass additional parameters directly to the VCC Build Tools installer. This tool does not
check if the parameters make sense — passing incorrect parameters might break the whole
installation.
Supply parameters to as a JSON array. Here’s quick example (note the double quotes):
If you run with , these parameters are available:
- : Specifies the installation control file.
- : Specifies the location to create a control file that can then be used
- : Set Custom install location.
- : Always restart the system after installation.
- : Install all product features.
-
: <item1;item2;…;itemN> Choose which selectable item(s) to be installed.
-selectable item to be installed, just pass in this switch without any value. - : Create a copy of the media in specified folder.
- : Prevent setup checking for updates from the internet.
- : Do not restart during or after installation.
- : Prevent setup downloading from the internet.
- : Display progress but do not wait for user input.
- : <25-character product key> Set custom product key (no dashes).
- : Prompt the user before restarting the system.
- : Repair the product.
- : Uninstall the product.
- : Uninstall the product and features shared with other products.
By default, will download the latest installers from Microsoft each time
it’s installed. Alternatively, you can prepare a folder that contains installers. They need to
have their original names:
- Visual Studio Build Tools: or
- Python: or
Then, run with the argument:
npm install -g windows-build-tools --offline-installers="C:UsersJohninstallers"
Ayrıca bkz.See also
BaşlıkTitle | AçıklamaDescription |
---|---|
İzlenecek yol: Sıfırdan MSBuild proje dosyası oluşturmaWalkthrough: Creating an MSBuild project file from scratch | Yalnızca bir metin düzenleyicisi kullanarak basit bir proje dosyasının artımlı olarak nasıl oluşturulacağını gösterir.Shows how to create a basic project file incrementally, by using only a text editor. |
İzlenecek Yol: MSBuild KullanmaWalkthrough: Using MSBuild | MSBuild ‘in yapı taşlarını tanıtır ve Visual Studio IDE ‘yi kapatmadan MSBuild projelerinin nasıl yazılacağını, değiştirileceğini ve hata ayıklacağınızı gösterir.Introduces the building blocks of MSBuild and shows how to write, manipulate, and debug MSBuild projects without closing the Visual Studio IDE. |
MSBuild kavramlarıMSBuild concepts | MSBuild: özellikler, öğeler, hedefler ve görevler için dört bina bloğunu gösterir.Presents the four building blocks of MSBuild: properties, items, targets, and tasks. |
ÖğeleriItems | MSBuild dosya biçiminin arkasındaki genel kavramları ve parçaların birbirine nasıl uyduğunu açıklar.Describes the general concepts behind the MSBuild file format and how the pieces fit together. |
MSBuild özellikleriMSBuild properties | Özellikleri ve özellik koleksiyonlarını tanıtır.Introduces properties and property collections. Özellikler, yapıları yapılandırmak için kullanılabilen anahtar/değer çiftleridir.Properties are key/value pairs that can be used to configure builds. |
LerdenTargets | Görevlerin belirli bir sırada nasıl gruplandırılacağını ve derleme işleminin bölümlerinin komut satırında çağrılacağını etkinleştirir.Explains how to group tasks together in a particular order and enable sections of the build process to be called on the command line. |
GörevlerTasks | Atomik derleme işlemleri gerçekleştirmek için MSBuild tarafından kullanılabilecek bir yürütülebilir kod birimi oluşturmayı gösterir.Shows how to create a unit of executable code that can be used by MSBuild to perform atomic build operations. |
KoşullarConditions | Bir MSBuild öğesinde özniteliğin nasıl kullanılacağını açıklar.Discusses how to use the attribute in an MSBuild element. |
Gelişmiş kavramlarAdvanced concepts | Toplu işleme, dönüşümler gerçekleştirme, Çoklu hedefleme ve diğer gelişmiş teknikleri gösterir.Presents batching, performing transforms, multitargeting, and other advanced techniques. |
MSBuild’de Günlük KaydıLogging in MSBuild | Oluşturma olaylarının, iletilerinin ve hatalarının nasıl günlüğe alınacağını açıklar.Describes how to log build events, messages, and errors. |
MSBuild ‘in projeleri nasıl oluştururHow MSBuild builds projects | MSBuild içinde kullanılan iç derleme işlemini açıklarDescribes the internal build process used within MSBuild |
Ek KaynaklarAdditional resources | MSBuild hakkında daha fazla bilgi için topluluk ve destek kaynaklarını listeler.Lists community and support resources for more information about MSBuild. |
ОбновленияUpdates
- В элемент Project добавлен атрибут .Project element has a new attribute. Также атрибут стал необязательным.Also the attribute is now optional. Дополнительные сведения об использовании атрибута см в статьях Информация об использовании пакетов SDK проекта MSBuild, Пакеты, метапакеты и платформы и Дополнения к формату CSPROJ для .NET Core.For more information on the attribute, see How to: Use MSBuild project SDKs, Packages, metapackages, and frameworks and Additions to the csproj format for .NET Core.
- Для внешних целевых объектов элемента Item добавлен атрибут .Item element outside targets has a new attribute. Кроме того, снято ограничение на атрибут .Also, the restriction on the attribute has been eliminated.
- Пользовательский файл Directory.Build.props содержит настройки персонализации для проектов в своем каталоге.Directory.Build.props is a user-defined file that provides customizations to projects under a directory. Этот файл автоматически импортируется из Microsoft.Common.props, если свойству не задано значение false.This file is automatically imported from Microsoft.Common.props unless the property is set to false. Directory.Build.targets импортируется с помощью Microsoft.Common.targets.Directory.Build.targets is imported by Microsoft.Common.targets.
- Все метаданные с именами, которые не противоречат текущему списку атрибутов, можно по желанию разработчика выразить в виде атрибута.Any metadata with a name that doesn’t conflict with the current list of attributes can optionally be expressed as an attribute. For more information, see Item element.
在命令提示符处使用 MSBuildUse MSBuild at a command prompt
若要在命令提示符处运行 MSBuild,请将项目文件随相应的命令行选项一起传递到 MSBuild.exe。To run MSBuild at a command prompt, pass a project file to MSBuild.exe, together with the appropriate command-line options. 命令行选项允许你设置属性、执行特定的目标,以及设置可控制生成过程的其他选项。Command-line options let you set properties, execute specific targets, and set other options that control the build process. 例如,使用以下命令行语法生成文件 MyProj.proj,并将 属性设置为 。For example, you would use the following command-line syntax to build the file MyProj.proj with the property set to .
有关 MSBuild 命令行选项的详细信息,请参阅命令行参考。For more information about MSBuild command-line options, see Command-line reference.
重要
在下载项目之前,请确定代码的可信度。Before you download a project, determine the trustworthiness of the code.
请参阅See also
TitleTitle | 描述Description |
---|---|
演练:从头创建 MSBuild 项目文件Walkthrough: Creating an MSBuild project file from scratch | 演示如何只使用文本编辑器以增量方式创建基本项目文件。Shows how to create a basic project file incrementally, by using only a text editor. |
演练:使用 MSBuildWalkthrough: Using MSBuild | 介绍 MSBuild 的构建基块,并演示如何在不关闭 Visual Studio IDE 的情况下编写、操作和调试 MSBuild 项目。Introduces the building blocks of MSBuild and shows how to write, manipulate, and debug MSBuild projects without closing the Visual Studio IDE. |
MSBuild 概念MSBuild concepts | 演示 MSBuild 的四个生成块:属性、项、目标和任务。Presents the four building blocks of MSBuild: properties, items, targets, and tasks. |
项Items | 介绍 MSBuild 文件格式背后的常规概念,以及所有这些概念之间的关系。Describes the general concepts behind the MSBuild file format and how the pieces fit together. |
MSBuild 属性MSBuild properties | 介绍属性和属性集合。Introduces properties and property collections. 属性是可用于配置生成的键/值对。Properties are key/value pairs that can be used to configure builds. |
目标Targets | 介绍如何按特定的顺序将任务组合到一起,并允许从命令行调用生成过程的各个部分。Explains how to group tasks together in a particular order and enable sections of the build process to be called on the command line. |
任务Tasks | 演示如何创建 MSBuild 可用于执行原子生成操作的可执行代码单元。Shows how to create a unit of executable code that can be used by MSBuild to perform atomic build operations. |
条件Conditions | 论述如何在 MSBuild 元素中使用 特性。Discusses how to use the attribute in an MSBuild element. |
高级概念Advanced concepts | 演示批处理、执行转换、多目标和其他高级技术。Presents batching, performing transforms, multitargeting, and other advanced techniques. |
MSBuild 中的日志记录Logging in MSBuild | 介绍如何记录生成事件、消息和错误。Describes how to log build events, messages, and errors. |
MSBuild 如何生成项目How MSBuild builds projects | 描述 MSBuild 中使用的内部生成过程Describes the internal build process used within MSBuild |
其他资源Additional resources | 列出社区和支持资源,用于了解有关 MSBuild 的更多信息。Lists community and support resources for more information about MSBuild. |
Распространенные сообщения об ошибках в MSBuild.exe
Наиболее распространенные ошибки MSBuild.exe, которые могут возникнуть на компьютере под управлением Windows, перечислены ниже:
- «Ошибка приложения MSBuild.exe.»
- «MSBuild.exe не является приложением Win32.»
- «Возникла ошибка в приложении MSBuild.exe. Приложение будет закрыто. Приносим извинения за неудобства.»
- «Файл MSBuild.exe не найден.»
- «MSBuild.exe не найден.»
- «Ошибка запуска программы: MSBuild.exe.»
- «Файл MSBuild.exe не запущен.»
- «Отказ MSBuild.exe.»
- «Неверный путь к приложению: MSBuild.exe.»
Такие сообщения об ошибках EXE могут появляться в процессе установки программы, когда запущена программа, связанная с MSBuild.exe (например, Windows), при запуске или завершении работы Windows, или даже при установке операционной системы Windows
Отслеживание момента появления ошибки MSBuild.exe является важной информацией при устранении проблемы
Bir komut isteminde MSBuild kullanmaUse MSBuild at a command prompt
MSBuild ‘i komut isteminde çalıştırmak için, uygun komut satırı seçenekleriyle birlikte MSBuild.exebir proje dosyası geçirin.To run MSBuild at a command prompt, pass a project file to MSBuild.exe, together with the appropriate command-line options. Komut satırı seçenekleri özellikleri ayarlamanıza, belirli hedefleri yürütmenizi ve yapı sürecini denetleyen diğer seçenekleri ayarlamanıza olanak sağlar.Command-line options let you set properties, execute specific targets, and set other options that control the build process. Örneğin, özelliği olarak ayarlanmış myproj. proj dosyasını oluşturmak için aşağıdaki komut satırı sözdizimini kullanın .For example, you would use the following command-line syntax to build the file MyProj.proj with the property set to .
MSBuild komut satırı seçenekleri hakkında daha fazla bilgi için bkz. komut satırı başvurusu.For more information about MSBuild command-line options, see Command-line reference.
Önemli
Bir projeyi indirmadan önce kodun güvenilirliğini saptayın.Before you download a project, determine the trustworthiness of the code.
Новые функции свойствNew property functions
- добавляет завершающую косую черту к пути, если она отсутствует. adds a trailing slash to a path if one doesn’t already exist.
- объединяет элементы пути и проверяет, что выходная строка имеет правильные знаки разделения для каталогов, используемые в текущей операционной системе. combines path elements and ensures that the output string has the correct directory separator characters for the current operating system.
- объединяет элементы пути, добавляет косую черту при необходимости и проверяет, что выходная строка имеет правильные знаки разделения для каталогов, используемые в текущей операционной системе. combines path elements, ensures a trailing slash, and ensures that the output string has the correct directory separator characters for the current operating system.
- возвращает путь к файлу, непосредственно предшествующему данному. returns the path of the file immediately preceding this one. Она функционально эквивалентна вызову такой инструкции: It is functionally equivalent to calling
Файлы, связанные с MSBuild.exe
Файлы EXE, связанные с MSBuild.exe
Имя файла | Описание | Программное обеспечение (версия) | Размер файла (в байтах) |
---|---|---|---|
eudcedit.exe | Private Character Editor | Microsoft Windows Operating System (6.0.6002.18005) | 280064 |
RMActivate.exe | Windows Rights Management Services Activation for Desktop Security Processo … | Microsoft Windows Operating System (6.3.9600.17415) | 543744 |
PrintBrmUi.exe | PrintBrm Application | Microsoft Windows Operating System (6.3.9600.17415) | 66560 |
query.exe | MultiUser Query Utility | Microsoft Windows Operating System (6.1.7601.17514) | 16384 |
aitagent.exe | Application Impact Telemetry Agent | Microsoft Windows Operating System (6.1.7601.17514) | 122880 |
Usage
Optional arguments:
- : Path to a folder with already downloaded installers. See
- : Use a given mirror to download Python (like ). You can alternatively set a environment variable.
- : Use a given proxy. You can alternatively set a environment variable.
- : Be extra verbose in the logger output. Equal to setting the environment variable to .
- : Enables «Strict SSL» mode. Defaults to false.
- : By default, will resume aborted downloads. Set to to disable.
- : Specifies the number of http sockets to use at once (this controls concurrency). Defaults to infinity.
- : Specifies additional parameters for the Visual C++ Build Tools 2015. See below for more detailed usage instructions.
- : The script will not output any information.
- : Install the Visual Studio 2015 Build Tools instead of the Visual Studio 2017 ones.
- : Don’t actually do anything, just print what the script would have done.
- : Include the optional Visual Studio components required to build binaries for ARM64 Windows. Only available with the 2017 and newer build tools and Node.js v12 and up.
Тестирование целей построенияTest the build targets
Для тестирования этих функций файла проекта можно запустить новые цели построения.You can exercise the new build targets to test these features of the project file:
-
Построение по умолчанию.Building the default build.
-
Задание имени приложения в командной строке.Setting the application name at the command prompt.
-
Удаление приложения перед построением другого приложения.Deleting the application before another application is built.
-
Удаление приложения без построения другого приложения.Deleting the application without building another application.
Тестирование целей построенияTo test the build targets
-
В командной строке введите msbuild helloworld.csproj -p:AssemblyName=Greetings.At the command prompt, type msbuild helloworld.csproj -p:AssemblyName=Greetings.
Так как параметр -t для задания цели напрямую не использовался, MSBuild запускает стандартную цель «Сборка».Because you did not use the -t switch to explicitly set the target, MSBuild runs the default Build target. Параметр -p переопределяет свойство и присваивает ему новое значение .The -p switch overrides the property and gives it the new value, . В результате в папке Bin создается новое приложение Greetings.exe.This causes a new application, Greetings.exe, to be created in the Bin folder.
-
Чтобы убедиться, что в папке Bin содержатся приложение MSBuildSample и новое приложение Greetings, введите dir Bin.To verify that the Bin folder contains both the MSBuildSample application and the new Greetings application, type dir Bin.
-
Протестируйте приложение Greetings, указав в командной строке BinGreetings.Test the Greetings application by typing BinGreetings.
Должно появиться сообщение Hello, world!The Hello, world! .message should be displayed.
-
Удалите приложение MSBuildSample с помощью команды msbuild helloworld.csproj -t:clean.Delete the MSBuildSample application by typing msbuild helloworld.csproj -t:clean.
Это запустит задачу «Очистить» и позволит удалить приложение со значением свойства по умолчанию — .This runs the Clean task to remove the application that has the default property value, .
-
Удалите приложение Greetings с помощью команды msbuild helloworld.csproj -t:clean -p:AssemblyName=Greetings.Delete the Greetings application by typing msbuild helloworld.csproj -t:clean -p:AssemblyName=Greetings.
Это запустит задачу «Очистить» и позволит удалить приложение с заданным значением свойства AssemblyName по умолчанию — .This runs the Clean task to remove the application that has the given AssemblyName property value, .
-
Чтобы убедиться, что папка Bin пуста, введите dir Bin.To verify that the Bin folder is now empty, type dir Bin.
-
Введите команду msbuild.Type msbuild.
Несмотря на то что файл проекта не указан, MSBuild строит файл helloworld.csproj, поскольку в текущей папке присутствует только один файл проекта.Although a project file is not specified, MSBuild builds the helloworld.csproj file because there is only one project file in the current folder. В результате в папке Bin создается новое приложение MSBuildSample.This causes the MSBuildSample application to be created in the Bin folder.
Чтобы убедиться, что в папке Bin появилось приложение MSBuildSample, введите dir Bin.To verify that the Bin folder contains the MSBuildSample application, type dir Bin.
Привет Хабр, в этих статьях я попытаюсь осветить тему расширений Microsoft Visual Studio(а попутно ещё и MSBuild), т.к. эта сфера является крайне плохо документированной и вообще покрыта пеленой какой-то загадочности.
Пролог
Я являюсь профессиональным разработчиком C++ с достаточно большим опытом работы, а также большим поклонником продукции компании Microsoft и в первую очередь главного моего инструмента разработки — Visual Studio. Не так давно, в качестве хобби, я начал заниматься программированием микроконтроллеров, и микроконтроллеры я выбрал от компании Microchip. Единственное, что меня не устраивало это использование инструментов разработки, которые предоставляет сама компания Microchip. Я ничего не могу сказать плохого про эти продукты, просто я не хотел бы устанавливать несколько IDE на свой рабочий(или домашний) компьютер, поэтому родилась мысль интегрировать компилятор XC8 от компании Microchip в Microsoft Visual Studio. Позже я увидел в этой идее ещё один плюс — множество моих(и не только моих) проектов прямо или косвенно связаны с подключением их к компьютеру, поэтому приходится разрабатывать ответную программную часть — было бы здорово объединять их в одно решение(solution) с проектом микропрограммы. Проковырявшись большое количество времени, я понял, что тема интеграции чего либо в Visual Studio является эдаким белом пятном: нормального описания нет, куцые описания в блогах, и что самое плохое — практически нет примеров. Собрав кое какую информацию по крупицам, кое-что поняв из описания и опираясь на метод научного тыка, я решил поделиться полученными знаниями. Итак, поехали.
План действий
Ну раз уж мы решили расширить функционал Visual Studio прикручиванием стороннего компилятора, то давайте расширим его максимально возможным образом. Для этого определимся со списком того, что мы хотим сделать:
- Чтобы при просмотре свойств проекта(Project Properties) в Visual Studio — были бы наши собственные свойства.
- Определить свой набор расширений файлов, которые можно было бы включать в проект.
- Естественно определить, свою систему сборки, чтобы вызывались наши компиляторы, линковщики и т.д.
- Создать свой тип проекта, чтобы студия могла открывать файл с нашим собственным расширением.
- Создать волшебник для генерации этого типа проекта.
Ну что же, попробуем осуществить из этого списка хотя бы часть требований.
Часть 1: MSBuild
Начнем, пожалуй, с теории:
- Microsoft Visual Studio — чуть менее чем полностью построена на технологии COM. Поэтому нужно быть готовым столкнуться с ней. Хотя мы попробуем все же этого избежать.
- Любой проект Microsoft Visual Studio является скриптом MSBuild.
Ввиду выше перечисленного, для расширения возможностей студии в первую очередь нам придется изучить устройство системы сборок, именуемое MSBuild.
Сразу оговорюсь: у меня под рукой была достаточно старая VIsual Studio 2010 — поэтому все описание будет для нее, но я полагаю, что с 2012 и 2013 студиями все будет аналогично.
Итак открываем студию, создаем Blank Solution и добавляем в него Empty Project (мне ближе проект в категории С++, поэтому я выбрал его)
Я назвал и проект и решение «test» и сделал так, чтобы они лежали в одной директории(это удобно для наших экспериментов, объясню позже)- таким образом получив файлы test.sln и test.vcxproj
Теперь закрываем студию и берем какой нибудь текстовый редактор(лучше с подсветкой XML синтаксиса — в принципе подойдет та же студия, только уже другой её экземпляр) и открываем test.vcxproj как текстовый файл.
Посмотрим, что внутри у test.vcxproj:
test.vcxproj
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{E1064D79-B415-4EDC-9FAC-C50E4102268B}</ProjectGuid>
<RootNamespace>test</RootNamespace>
</PropertyGroup>
<Import Project="$(VCTargetsPath)Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup />
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
</ItemGroup>
<Import Project="$(VCTargetsPath)Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>
Самое главное, что необходимо увидеть здесь:
- тег ProjectConfiguration.
- тег ProjectGuid.
- файлы, которые подключаются тегом Import.
Все остальное можно спокойно удалять. Также предлагаю удалить файл test.filters, чтобы нам не мешались виртуальные директории в проекте.
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{E1064D79-B415-4EDC-9FAC-C50E4102268B}</ProjectGuid>
<RootNamespace>test</RootNamespace>
</PropertyGroup>
<Import Project="$(VCTargetsPath)Microsoft.Cpp.Default.props" />
<Import Project="$(VCTargetsPath)Microsoft.Cpp.targets" />
</Project>
Приведенный выше файл абсолютно валидный с точки зрения студии и MSBuild, его можно открыть и даже собрать.
Также предлагаю сразу разобраться со сборкой нашего проекта из командной строки:
- Запускаем Microsoft Visual Studio Command Prompt
- Переходим в директорию, где находится test.vcxproj
- Выполняем msbuild test.vcxproj /p:Configuration=Debug /p:Platform=Win32
Можно написать скрипт для автоматизации данного процесса, чтобы было удобнее проверять сборку на предмет ошибок и прочего.
Теперь начинаем разбираться в том, что отвечает за свойства проекта и вообще, что делает наш проект — проектом студии. А делают это все строчки:
<Import Project="$(VCTargetsPath)Microsoft.Cpp.Default.props" />
<Import Project="$(VCTargetsPath)Microsoft.Cpp.targets" />
Импортируемые файлы у меня находятся с директории C:Program FilesMSBuildMicrosoft.Cppv4.0
Можно конечно попробовать их посмотреть, но я боюсь человек, который никогда не разбирался с MSBuild, вряд ли что-то поймет, а желание разбираться в этом во всем мгновенно улетучится. Так что я предлагаю пока туда не смотреть, т.к. можно потратить уйму времени(как сделал автор) и все равно ничего не понять.
Важно!!: При каждой правке vcxproj и сопутствующих файлов необходимо перезапускать студию полностью! Опытным путем было установлено, что Visual Studio, что-то(скорее всего файлы *.props и *.targets) кеширует — поэтому простого Unload Project/Reload Project не достаточно! Именно поэтому я изначально создал sln файл рядом с vcxproj, чтобы было удобно перезапускать, не меняя директории.
Итак давайте просто удалим строчки с тегом Import и посмотрим, что получится.
Файл должен быть таким:
test.vcxproj
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{E1064D79-B415-4EDC-9FAC-C50E4102268B}</ProjectGuid>
<RootNamespace>test</RootNamespace>
</PropertyGroup>
</Project>
Открыв его в студии — мы с удивлением обнаружим, что файл все ещё является валидным. Но собрать его уже не получится, мы получим сообщение:
1>Error: The «ConfigurationGeneral» rule is missing from the project.
Пока мы не желаем собирать проект — поэтому не обращаем на это внимания.
Посмотрим, что у нас в свойствах проекта — и наблюдаем следующую картину:
Красота! Мы убрали все лишнее, вернее всего, убрали вообще все.
Если мы попытаемся добавить файл к проекту, то у нас ничего не получится, студия выдает ошибку.
Лирическое отступление:
Читатель возможно задаст вопрос, а как же студия все ещё определяет, что это проект C++ — элементарно по расширению vcxproj, которое явно указывает на Visual C++. Возможно читателю этот вопрос покажется достаточно глупым, но когда долго экспериментируешь с проектом, который фактически уже не является С++ проектом, а студия все ещё пытается вести себя по правилам С++, совершенно забываешь про расширение самого файла — а оно имеет кардинальное значение. Мы будем от этого избавляться, но лишь в одной из следующих частей данного повествования.
Проект пуст. Приступим к наполнению.
Читатель наверняка уже догадался, что мы будем создавать свои собственные файлы *.props и *.targets, но в начале немного теории:
- файлы *.props и *.targets совсем не обязательно должны иметь расширения *.props и *.targets — это фактически, что-то типа подключаемых файлов(include). Но мы не будем нарушать гегемонию студии и оставим привычные всем расширения.
- *.props обычно отвечают за свойства проекта и переменные окружения.
- *.targets отвечают за сборку — в них описывается, что делать с файлами(а может и не с файлами), которые добавлены к проекту, т.е. все возможные действия/задания(Tasks) и за типы файлов проекта определямые схемой(ProjectSchema) и правилами(Rules).
Файл *.targets.
Для дальнейшего повествования, я предлагаю перейти от абстракции к конкретной задаче прикручивания компилятора XC8 от компании Microchip к Visual Studio. Компилятор XC8 необходимо скачать с сайта Microchip и установить.
Отступление: Вообще файлы *.targets как и *.props находятся в определенных папках самого MSBuild, но сейчас мы так делать не будем, т.к. это уже относится к задачам распространения новоиспеченного расширения и, в целом, задачам инсталятора, а для наших экспериментов удобнее всего все хранить в одной директории рядом с проектом.
Создадим файл XC8.targets в директории рядом с test.vcxproj.
Содержание XC8.targets:
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!-- Properties -->
<ItemGroup>
<PropertyPageSchema Include="XC8.Items.xml"/>
</ItemGroup>
</Project>
Из файла видно, что мы пытаемся определить схему страницы свойств(PropertyPageSchema) и подключить файл XC8.Items.xml. Как догадался читатель — в файле XC8.Items.xml мы будем описывать типы файлов, которые будут участвовать в нашем проекте. Конкретно для компилятора XC8 — это файлы *.c; *.h; *.asm итд.
Создадим XC8.Items.xml поместив его в директорию с нашим проектом.
Содержание XC8.Items.xml:
<?xml version="1.0" encoding="utf-8"?>
<ProjectSchemaDefinitions
xmlns="http://schemas.microsoft.com/build/2009/properties">
<ContentType
Name="CCode"
DisplayName="C Code"
ItemType="Compile">
</ContentType>
<ContentType
Name="AsmCode"
DisplayName="Asm Code"
ItemType="Compile">
</ContentType>
<ContentType
Name="Header"
DisplayName="C/C++ Header"
ItemType="Include">
</ContentType>
<ContentType
Name="Text"
DisplayName="Text file"
ItemType="None">
</ContentType>
<ItemType Name="Compile" DisplayName="XC8 Compiler"/>
<ItemType Name="Include" DisplayName="C header"/>
<ItemType Name="None" DisplayName="Does not participate in build"/>
<FileExtension Name=".c" ContentType="CCode"/>
<FileExtension Name=".cc" ContentType="CCode"/>
<FileExtension Name=".s" ContentType="AsmCode"/>
<FileExtension Name=".asm" ContentType="AsmCode"/>
<FileExtension Name=".h" ContentType="Header"/>
<FileExtension Name=".txt" ContentType="Text"/>
</ProjectSchemaDefinitions>
Как видно в этом файле мы определили те типы файлов, которые нам нужны в проекте. А с помощью тега FileExtension определили расширения этих файлов.
Теперь наконец импортируем XC8.targets в наш проект, для этого используем тег Import
Содержание test.vcxproj:
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{E1064D79-B415-4EDC-9FAC-C50E4102268B}</ProjectGuid>
<RootNamespace>test</RootNamespace>
</PropertyGroup>
<Import Project="XC8.targets" />
</Project>
Теперь открываем студию и пробуем добавить простейший файл main.c
Содержание файла:
main.c
#include <xc.h>
int main()
{
return 0;
}
Вуаля — теперь файл добавился. Посмотрим свойства файла:
Мы видим, что в выпадающем списке Item Type отображаются элементы которые мы указали в файле XC8.Items.xml.
Важно!!: Основным тегом в файле XC8.Items.xml, в целом, является ContentType с атрибутом ItemType. Именно значение атрибута ItemType мы будем использовать в дальнейшем как основное.
Сохраним в студии наш test.vcxproj, закроем студию, а затем посмотрим его текст:
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{E1064D79-B415-4EDC-9FAC-C50E4102268B}</ProjectGuid>
<RootNamespace>test</RootNamespace>
</PropertyGroup>
<ItemGroup>
<Compile Include="main.c" />
</ItemGroup>
<Import Project="XC8.targets" />
</Project>
Мы видим, что у нас добавился ещё тег ItemGroup внутри, которого находится тег Compile. Название этого тега — это и есть то, что мы указали в качестве значения атрибута ItemType тега ContentType в файле XC8.Items.xml. Как уже догадался уважаемый читатель — с помощью этого механизма в наш проект включаются новые файлы для сборки.
Теперь займемся свойствами проекта. Для этого необходимо в наш XC8.targets включить 2 файла:
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!-- Properties -->
<ItemGroup>
<PropertyPageSchema Include="XC8.Items.xml"/>
<PropertyPageSchema Include="XC8.General.xml">
<Context>Project</Context>
</PropertyPageSchema>
<PropertyPageSchema Include="XC8.General.PS.xml">
<Context>PropertySheet</Context>
</PropertyPageSchema>
</ItemGroup>
</Project>
И, как обычно, необходимо создать файлы XC8.General.xml и XC8.General.PS.xml в директории с проектом.
Сразу оговорюсь: зачем нужен второй файл XC8.General.PS.xml я, до конца, так и не выяснил, т.к. он присутствовал во всех материалах, которые я изучал — я решил его оставить, назвав в соответствии с нашим проектом. Если кто-нибудь имеет информацию по данному вопросу — прошу поделиться.
Содержимое:
XC8.General.PS.xml
<?xml version="1.0" encoding="utf-8"?>
<Rule
Name="ConfigurationGeneral"
DisplayName="General"
PageTemplate="generic"
Description="General"
xmlns="http://schemas.microsoft.com/build/2009/properties">
<Rule.Categories>
<Category Name="General" DisplayName="General" Description="General" />
</Rule.Categories>
<Rule.DataSource>
<DataSource Persistence="ProjectFile" Label="Configuration" />
</Rule.DataSource>
</Rule>
Теперь обратимся к файлу XC8.General.xml в нем мы будем описывать свойства нашего проекта, а именно — страницу свойств General. Напоминаю: именно эту страницу от нас просила Visual Studio при попытке сборки проекта. Страницы свойств в проекте описываются тегом Rule. Без лишних слов я просто приведу свой файл XC8.General.xml а затем попытаюсь объяснить его структуру.
<?xml version="1.0" encoding="utf-8"?>
<Rule
Name="ConfigurationGeneral"
DisplayName="General"
PageTemplate="generic"
Description="General"
SwitchPrefix="-"
xmlns="http://schemas.microsoft.com/build/2009/properties">
<Rule.Categories>
<Category Name="General" DisplayName="General" Description="General" />
<Category Name="ProjectDefaults" DisplayName="Project Defaults" Description="Project Defaults" />
</Rule.Categories>
<Rule.DataSource>
<DataSource Persistence="ProjectFile" Label="Configuration" />
</Rule.DataSource>
<!-- General -->
<StringProperty Name="OutDir" DisplayName="Output Directory"
Description="Specifies a relative path to the output file directory; can include environment variables."
Category="General" Default="$(SolutionDir)$(Configuration)"
Subtype="folder"
F1Keyword="VC.Project.VCConfiguration.OutputDirectory">
<StringProperty.DataSource>
<DataSource Persistence="ProjectFile" Label="" />
</StringProperty.DataSource>
</StringProperty>
<StringProperty Name="IntDir" DisplayName="Intermediate Directory"
Description="Specifies a relative path to the intermediate file directory; can include environment variables."
Category="General" Default="$(Configuration)"
Subtype="folder"
F1Keyword="VC.Project.VCConfiguration.IntermediateDirectory">
<StringProperty.DataSource>
<DataSource Persistence="ProjectFile" Label="" />
</StringProperty.DataSource>
</StringProperty>
<StringProperty Name="TargetName" DisplayName="Target Name"
Description="Specifies a file name that this project will generate."
F1Keyword="VC.Project.VCConfiguration.TargetName"
Category="General" Default="$(ProjectName)"
>
<StringProperty.DataSource>
<DataSource Persistence="ProjectFile" Label="" />
</StringProperty.DataSource>
</StringProperty>
<StringListProperty Name="ExtensionsToDeleteOnClean" DisplayName="Extensions to Delete on Clean"
Description="Semi-colon delimited wildcard specification for which files in the intermediate directory to delete on clean or rebuild."
Category="General"
Separator=";"
F1Keyword="VC.Project.VCConfiguration.DeleteExtensionsOnClean">
<StringListProperty.DataSource>
<DataSource Persistence="ProjectFile" Label="" />
</StringListProperty.DataSource>
</StringListProperty>
<StringProperty Name="BuildLogFile" DisplayName="Build Log File"
Description="Specifies the build log file to write to when build logging is enabled."
F1Keyword="VC.Project.VCConfiguration.BuildLogFile"
Category="General"
Default="$(ProjectDir)$(MSBuildProjectName).log"
Subtype="file">
<StringProperty.DataSource>
<DataSource Persistence="ProjectFile" ItemType="BuildLog" PersistedName="Path" />
</StringProperty.DataSource>
</StringProperty>
<StringProperty Name="Chip" DisplayName="Select Processor"
Description="This option selects the processor target for compilation. A list of available processors can be obtained by using the chipinfo option."
Category="ProjectDefaults"
Switch="-chip="/>
<BoolProperty Name="QuietMode" DisplayName="Quiet Mode"
Description="This option suppresses the Microchip copyright message, and any summary information usually printed by the compiler."
Category="ProjectDefaults"
Default="false"
Switch="Q"/>
<BoolProperty Name="VerboseMode" DisplayName="Verbose Mode"
Description="This option is used to display the command lines used to invoke each of the compiler passes."
Category="ProjectDefaults"
Default="false"
Switch="V"/>
</Rule>
Файл довольно объемный, но мне все же не хотелось убирать его под спойлер, т.к. он имеет важное значение.
Итак, тег Rule имеет несколько важных атрибутов:
- Name=«ConfigurationGeneral» — студия ищет правило именно с этим значением атрибута Name. Если у Вас не будет правила с названием ConfigurationGeneral, скорее всего у Вас ничего не получится.
- DisplayName=«General» — это название, которое будет отображаться в окне конфигурации проекта, можете назвать как угодно. Я оставил, канонически: «General».
- Description=«General» — описание. Пояснять надеюсь не требуется.
- SwitchPrefix=»-« — этот атрибут определяет префикс ключа команд при передаче их в систему сборки. Допустим ключи вашего компилятора начинаются с «/» (пример: /Ipath определяет путь подключаемых файлов) — соответсвенно значение этого атрибута будет «/», у XC8 компилятора все ключи начинаются с «-«, что собственно у меня и написано. Если у вас ключи разных форматов, то этот атрибут можно оставить пустым или вовсе не указывать.
- xmlns — атрибут поведения документа в целом, пространства имен и т.д., соответсвенно менять его не имеет смысла.
- PageTemplate — определяет отображение страницы свойств в настройке проекта, мы будем работать с шаблонами generiic и tool — всю разницу между ними я покажу позже на скриншотах (уже в следующей части).
Тег Rule.Categories служит для определения категорий внутри страницы свойств. Таких категорий у нас две:
- General — общие настройки проекта — обычно всякие пути.
- ProjectDefaults — настройки особенностей нашего XC8 проекта — я вынес сюда ключики, которые должны передаваться и компилятору и к линковщику.
Понятно, что Вы можете определить таких категорий сколько пожелаете.
Тег Rule.DataSource определяет где будут храниться значения свойств. У нас указано ProjectFile — т.е. в файле проекта. Я атрибут Persistence не менял, т.к. не представляю где ещё могут храниться настройки проекта как не в файле этого самого проекта, в нашем случае в test.vcxproj.
Теги с окончанием Property, как Вы уже догадались — это и есть свойства которые будут у нас отображаться в окне свойств нашего проекта.
- StringProperty — строковое.
- StringListProperty — список строк. Например перечисление Include директорий или, как здесь, перечесление файлов при очистке проекта(Clean).
- IntProperty — числовое, но оно ведет себя почему-то как строковое, так что этот момент остается загадкой.
- BoolProperty — флаг.
- EnumProperty — перечисление, я расскажу о нем позже т.к. в нашем файле XC8.General.xml таких нет.
Рассмотрим основные атрибуты свойств:
- Name — название. Имеет важное значение т.к. может участвовать в объявлении макросов студии(те которые $(BlaBlaBla)). Как это сделать я расскажу позже.
- DisplayName — отображаемое название.
- Description — описание. Отображается внизу — при выборе данного свойства в окне свойств проекта.
- Category — определяет, в какой категории будет отображаться наше свойство. В нашем случае категорий 2: General и ProjectDefaults.
- Subtype — определяет подтип свойства StringProperty. Из тех, которые я видел — это folder и file, но поведение их почти ничем не отличается.
- F1Keyword — определяет справку по данному свойству.
- Default — этот атрибут по идее должен определять значение свойства по умолчанию, но он этого не делает — возможно, это просто подсказка (которую я тоже нигде не нашел). Для определения значений свойств по умолчанию существует совершенно другой механизм, о котором я буду рассказывать в следующей части повествования.
- Switch — определяет ключ данного свойства. В конечном итоге складывается с атрибутом SwitchPrefix тега Rule и передается в сборку. В случае со свойством QuietMode это будет «-Q»
Атрибутов у свойств и правил достаточно много — читатель может познакомится с ними по ссылке: Microsoft.Build.Framework.XamlTypes Namespace. Но будьте готовы не найти там никакого внятного описания, такое ощущение, что данная документация сделана автоматически каким-то генератором, без описаний. Радует только то, что назначение многих атрибутов понятно по их названиям.
Теперь открываем наш проект в студии и смотрим окно свойств проекта
Если попытаться собрать проект, то мы увидим уже другую ошибку: error MSB4057: The target «build» does not exist in the project., которая говорит нам об отсутствии Target тега с названием build.
На этом первую часть повествования я заканчиваю, мы добились определенного результата. В следующий раз я расскажу, как создавать Target, Task, определять значения по умолчанию и макросы студии.
Файлы проекта можно скачать здесь.
Материалы, которые позволили мне изучить вопрос:
MSDN: Microsoft.Build.Framework.XamlTypes Namespace
Проект: vs-android
Статья на Хабре: Минимальный проект MsBuild
MSDN: Пошаговое руководство. Создание файла проекта MSBuild с нуля
А также метод научного тыка в директории С:Program FilesMSBuildMicrosoft.Cppv4.0
Содержание
- 1. Что такое msbuild.exe?
- 2. Msbuild.exe безопасный или это вирус или вредоносная программа?
- 3. Могу ли я удалить или удалить msbuild.exe?
- 4. Распространенные сообщения об ошибках в msbuild.exe
- 5. Как исправить msbuild.exe
- 6. Январь 2023 Обновление
- 7. Загрузите или переустановите msbuild.exe
Обновлено 2023 января: Вот три шага к использованию инструмента восстановления для устранения проблем с exe на вашем компьютере: Получите его по адресу эту ссылку
- Скачайте и установите это программное обеспечение.
- Просканируйте свой компьютер на наличие проблем с exe.
- Исправьте ошибки exe с помощью программного инструмента
msbuild.exe это исполняемый файл, который является частью Windows 8 Consumer Preview ISO-образы разработанный Microsoft, Версия программного обеспечения для Windows: 1.0.0.0 обычно 84744 в байтах, но у вас может отличаться версия.
Расширение .exe имени файла отображает исполняемый файл. В некоторых случаях исполняемые файлы могут повредить ваш компьютер. Пожалуйста, прочитайте следующее, чтобы решить для себя, является ли msbuild.exe Файл на вашем компьютере — это вирус или вредоносная программа, которую вы должны удалить, или, если это действительно допустимый файл операционной системы Windows или надежное приложение.
Рекомендуется: Выявление ошибок, связанных с msbuild.exe.
(опциональное предложение для Reimage — Cайт | Лицензионное соглашение | Персональные данные | Удалить)
Msbuild.exe безопасный или это вирус или вредоносная программа?
Первое, что поможет вам определить, является ли тот или иной файл законным процессом Windows или вирусом, это местоположение самого исполняемого файла. Например, для msbuild.exe его путь будет примерно таким: C: Program Files Microsoft Windows 8 Consumer Preview ISO images msbuild.exe
Чтобы определить его путь, откройте диспетчер задач, перейдите в «Просмотр» -> «Выбрать столбцы» и выберите «Имя пути к изображению», чтобы добавить столбец местоположения в диспетчер задач. Если вы обнаружите здесь подозрительный каталог, возможно, стоит дополнительно изучить этот процесс.
Еще один инструмент, который иногда может помочь вам обнаружить плохие процессы, — это Microsoft Process Explorer. Запустите программу (не требует установки) и активируйте «Проверить легенды» в разделе «Параметры». Теперь перейдите в View -> Select Columns и добавьте «Verified Signer» в качестве одного из столбцов.
Если статус процесса «Проверенная подписывающая сторона» указан как «Невозможно проверить», вам следует взглянуть на процесс. Не все хорошие процессы Windows имеют метку проверенной подписи, но ни один из плохих.
Самые важные факты о msbuild.exe:
- Имя: msbuild.exe
- Программного обеспечения: Windows 8 Consumer Preview ISO-образы
- Издатель: Microsoft
- Ожидаемое местоположение: C: Program Files Microsoft Windows ISO-образы предварительного просмотра 8 подпапке
- Ожидаемый полный путь: C: Program Files Microsoft Windows Предварительный просмотр образов 8 ISO-образов msbuild.exe
- SHA1: 00300447B3E13227B195DCBDD502D0CF3418E7C7
- SHA256:
- MD5: E4EE7F0FDB9CD0B413AB5FE6A5083F4F
- Известно, что до 84744 размер байт в большинстве Windows;
Если у вас возникли какие-либо трудности с этим исполняемым файлом, вы должны определить, заслуживает ли он доверия, перед удалением msbuild.exe. Для этого найдите этот процесс в диспетчере задач.
Найти его местоположение и сравнить размер и т. Д. С приведенными выше фактами
Если вы подозреваете, что можете быть заражены вирусом, вы должны немедленно попытаться это исправить. Чтобы удалить вирус msbuild.exe, необходимо скачайте и установите приложение полной безопасности, как это, Обратите внимание, что не все инструменты могут обнаружить все типы вредоносных программ, поэтому вам может потребоваться попробовать несколько вариантов, прежде чем вы добьетесь успеха.
Кроме того, функциональность вируса может сама влиять на удаление msbuild.exe. В этом случае вы должны включить Безопасный режим с загрузкой сетевых драйверов — безопасная среда, которая отключает большинство процессов и загружает только самые необходимые службы и драйверы. Когда вы можете запустить программу безопасности и полный анализ системы.
Могу ли я удалить или удалить msbuild.exe?
Не следует удалять безопасный исполняемый файл без уважительной причины, так как это может повлиять на производительность любых связанных программ, использующих этот файл. Не забывайте регулярно обновлять программное обеспечение и программы, чтобы избежать будущих проблем, вызванных поврежденными файлами. Что касается проблем с функциональностью программного обеспечения, проверяйте обновления драйверов и программного обеспечения чаще, чтобы избежать или вообще не возникало таких проблем.
Лучшая диагностика для этих подозрительных файлов — полный системный анализ с ASR Pro or это антивирус и средство для удаления вредоносных программ, Если файл классифицирован как вредоносный, эти приложения также удалят msbuild.exe и избавятся от связанных вредоносных программ.
Однако, если это не вирус, и вам нужно удалить msbuild.exe, вы можете удалить образы Windows 8 Consumer Preview ISO с вашего компьютера с помощью программы удаления. Если вы не можете найти его деинсталлятор, вам может потребоваться удалить ISO-образы Windows 8 Consumer Preview, чтобы полностью удалить msbuild.exe. Вы можете использовать функцию «Установка и удаление программ» на панели управления Windows.
- 1. в Меню Пуск (для Windows 8 щелкните правой кнопкой мыши в нижнем левом углу экрана), нажмите Панель управления, а затем под Программы:
o Windows Vista / 7 / 8.1 / 10: нажмите Удаление программы.
o Windows XP: нажмите Установка и удаление программ.
- 2. Когда вы найдете программу Windows 8 Consumer Preview ISO-образыщелкните по нему, а затем:
o Windows Vista / 7 / 8.1 / 10: нажмите Удалить.
o Windows XP: нажмите Удалить or Изменить / Удалить вкладка (справа от программы).
- 3. Следуйте инструкциям по удалению Windows 8 Consumer Preview ISO-образы.
Распространенные сообщения об ошибках в msbuild.exe
Наиболее распространенные ошибки msbuild.exe, которые могут возникнуть:
• «Ошибка приложения msbuild.exe».
• «Ошибка msbuild.exe».
• «msbuild.exe столкнулся с проблемой и должен быть закрыт. Приносим извинения за неудобства.»
• «msbuild.exe не является допустимым приложением Win32».
• «msbuild.exe не запущен».
• «msbuild.exe не найден».
• «Не удается найти msbuild.exe».
• «Ошибка запуска программы: msbuild.exe».
• «Неверный путь к приложению: msbuild.exe».
Эти сообщения об ошибках .exe могут появляться во время установки программы, во время выполнения ее ассоциированного программного обеспечения, образов ISO Windows 8 Consumer Preview, во время запуска или завершения работы Windows или даже во время установки операционной системы Windows. Отслеживание момента появления ошибки msbuild.exe является важной информацией, когда дело доходит до устранения неполадок.
Как исправить msbuild.exe
Аккуратный и опрятный компьютер — это один из лучших способов избежать проблем с msbuild.exe. Это означает выполнение сканирования на наличие вредоносных программ, очистку жесткого диска cleanmgr и ПФС / SCANNOWудаление ненужных программ, мониторинг любых автозапускаемых программ (с помощью msconfig) и включение автоматических обновлений Windows. Не забывайте всегда делать регулярные резервные копии или хотя бы определять точки восстановления.
Если у вас возникла более серьезная проблема, постарайтесь запомнить последнее, что вы сделали, или последнее, что вы установили перед проблемой. Использовать resmon Команда для определения процессов, вызывающих вашу проблему. Даже в случае серьезных проблем вместо переустановки Windows вы должны попытаться восстановить вашу установку или, в случае Windows 8, выполнив команду DISM.exe / Online / Очистка-изображение / Восстановить здоровье, Это позволяет восстановить операционную систему без потери данных.
Чтобы помочь вам проанализировать процесс msbuild.exe на вашем компьютере, вам могут пригодиться следующие программы: Менеджер задач безопасности отображает все запущенные задачи Windows, включая встроенные скрытые процессы, такие как мониторинг клавиатуры и браузера или записи автозапуска. Единый рейтинг риска безопасности указывает на вероятность того, что это шпионское ПО, вредоносное ПО или потенциальный троянский конь. Это антивирус обнаруживает и удаляет со своего жесткого диска шпионское и рекламное ПО, трояны, кейлоггеры, вредоносное ПО и трекеры.
Обновлено в январе 2023 г .:
Мы рекомендуем вам попробовать этот новый инструмент. Он исправляет множество компьютерных ошибок, а также защищает от таких вещей, как потеря файлов, вредоносное ПО, сбои оборудования и оптимизирует ваш компьютер для максимальной производительности. Это исправило наш компьютер быстрее, чем делать это вручную:
- Шаг 1: Скачать PC Repair & Optimizer Tool (Windows 10, 8, 7, XP, Vista — Microsoft Gold Certified).
- Шаг 2: Нажмите «Начать сканирование”, Чтобы найти проблемы реестра Windows, которые могут вызывать проблемы с ПК.
- Шаг 3: Нажмите «Починить все», Чтобы исправить все проблемы.
(опциональное предложение для Reimage — Cайт | Лицензионное соглашение | Персональные данные | Удалить)
Загрузите или переустановите msbuild.exe
Вход в музей Мадам Тюссо не рекомендуется загружать файлы замены exe с любых сайтов загрузки, так как они могут содержать вирусы и т. д. Если вам нужно скачать или переустановить msbuild.exe, мы рекомендуем переустановить основное приложение, связанное с ним Windows 8 Consumer Preview ISO-образы.
Информация об операционной системе
Ошибки msbuild.exe могут появляться в любых из нижеперечисленных операционных систем Microsoft Windows:
- Windows 10
- Windows 8.1
- Windows 7
- Windows Vista
- Windows XP
- Windows ME
- Windows 200
Содержание
- MSBuild что это за программа и нужна ли она?
- MSBuild
- Использование MSBuild в командной строке
- Файл проекта
- Свойства
- Элементы
- Задачи
- Целевые объекты
- Журналы сборки
- Использование MSBuild в Visual Studio
- Настройка для различных версий
- См. также
- Справочник
- Что такое msbuild.exe? Это безопасно или вирус? Как удалить или исправить это
- Что такое msbuild.exe?
- Msbuild.exe безопасный или это вирус или вредоносная программа?
- Могу ли я удалить или удалить msbuild.exe?
- Распространенные сообщения об ошибках в msbuild.exe
- Как исправить msbuild.exe
- Обновленный октябрьский 2022:
- Загрузите или переустановите msbuild.exe
- Пошаговое руководство. Использование MSBuild
- Установка MSBuild
- Создание проекта MSBuild
- Анализ файла проекта
- Целевые объекты и задачи
- Добавление целевого объекта и задачи
- Создание целевого объекта
- Свойства сборки
- Анализ значения свойства
- Условные свойства
- Зарезервированные свойства
- Переменные среды
- Задание свойств из командной строки
- Специальные символы
- Элементы сборки
- Анализ значений типа элемента
- Атрибуты Include, Exclude и подстановочные знаки
- Метаданные элементов
- Стандартные метаданные
- Преобразования метаданных
- Следующие шаги
MSBuild что это за программа и нужна ли она?
Если вы думаете как удалить MSBuild, то я этого не советую делать, а то могут возникнуть разные глюки через некоторое время. Могу дать совет — переименуйте папку например в …MSBuild_, поработайте пару дней за компом, если нет глюков можете удалить
Особого смысла писать подробно о том что за программа MSBuild нет, так как вряд ли вам будет интересно, это для программистов. Ну что интересно? Окей, тогда немного напишу. Вот смотрите, MSBuild запускается из командной строки таким образом — файл проекта передается модулю MSBuild.exe с определенными аргументами. В результате при помощи аргументов указываются свойства, задаются обьекты и средства для ведения журнала. Также этот модуль будет полезен для отображения в командной строке ошибок, предупреждений, сообщений.
Разработка приложения в проекте MSBuild при использовании среды разработки Visual Studio 2005:
Итак, какой можем сделать вывод о программе MSBuild?
Скорее всего папку вы нашли в Program Files, но вот какая штука, в эту папку, пользуясь тем что это системный компонент, может также поселится и вирус. Но если вдруг подозреваете, что это вирус… то тут лучше сразу проверить компьютер онлайн сканером, если будут вирусы, то он их найдет и после проверки вы их сможете удалить.
Как видите, интересного мало, это системная программа и папку ее как бы не желательно удалять, тем более что если она просто простаивает — то она никому не мешает и не нагружает процессор вообще никак.
Так вот, по поводу вирусов, если думаете что они поселились на компе — то нет вопросов, проверьте сперва инструментом AdwCleaner, а потом пройдитесь сканером Eset, я о нем писал тут (во второй половине статьи!).
Источник
MSBuild
Microsoft Build Engine представляет собой платформу для сборки приложений. Компонент MSBuild обеспечивает для файла проекта схему XML, определяющую способы, используемые платформой сборки для обработки и сборки приложений. Visual Studio использует MSBuild, но MSBuild не зависит от Visual Studio. Вызывая msbuild.exe для файла проекта или решения, можно контролировать и создавать в продукты в средах без установленного экземпляра Visual Studio.
Visual Studio использует MSBuild для загрузки и сборки управляемых проектов. Файлы проектов в Visual Studio (с расширением CSPROJ, VBPROJ, VCXPROJ) содержат код XML MSBuild, который выполняется при создании проекта с помощью интегрированной среды разработки. Проекты Visual Studio импортируют все необходимые параметры и процессы сборки для выполнения стандартной работы по разработке, но их можно расширять и изменять в Visual Studio или в редакторе XML.
Начиная с Visual Studio 2022, при выполнении сборки в Visual Studio используется 64-разрядная версия MSBuild.
Сведения об MSBuild для C++ см. в разделе MSBuild (C++).
В следующих примерах показаны случаи, когда сборки можно запускать с помощью вызова MSBuild из командной строки, а не интегрированной среды разработки Visual Studio.
Вам требуется 64-разрядная версия MSBuild, но вы используете Visual Studio 2019 или более ранней версии. Эта версия MSBuild обычно не нужна, но она позволяет MSBuild обращаться к большему объему памяти.
Сборку требуется выполнять в нескольких процессах. Однако можно использовать интегрированную среду разработки, чтобы добиться того же результата для проектов на C++ и C#.
Требуется изменить систему сборки. Например, может потребоваться выполнить следующие действия:
предварительная обработка файлов перед их компиляцией;
копирование выходных данных сборки в другое место;
создание сжатых файлов из выходных данных сборки;
пост-обработка. Например, может потребоваться присвоить сборке другой номер версии.
С помощью Azure Pipelines можно автоматически компилировать, тестировать и развертывать приложение. Система сборки может автоматически запускать сборку, когда разработчики возвращают код (например, как часть стратегии непрерывной интеграции) или по расписанию (например, выполнять ежедневную ночную тестовую сборку). Azure Pipelines компилирует код с использованием MSBuild. Дополнительные сведения см. в описании Azure Pipelines.
В статье представлен обзор MSBuild. Вводную информацию см. в статье Пошаговое руководство. Использование MSBuild.
Использование MSBuild в командной строке
Дополнительные сведения о параметрах командной строки MSBuild см. в статье Справочник по командной строке MSBuild.
Перед загрузкой проекта определите, можно ли доверять коду.
Файл проекта
MSBuild использует открытый и расширяемый формат файлов проекта на базе XML. Формат файла проекта MSBuild позволяет разработчикам описывать создаваемые элементы, а также способы их построения для разных операционных систем и конфигураций. Кроме того, формат файла проекта позволяет разработчикам создавать многократно используемые правила сборки, которые можно разложить на отдельные файлы, чтобы сборки могли выполняться единообразно в различных проектах в составе соответствующего продукта.
В следующих разделах описаны некоторые из базовых элементов формата файла проекта MSBuild. См. дополнительные сведения о создании базового файла проекта MSBuild с нуля.
Свойства
Дополнительные сведения о свойствах см. в разделе Свойства MSBuild.
Элементы
Элементы — это входные данные для системы сборки, как правило, представляющие файлы. Элементы группируются в типы на основе определяемых пользователем имен элементов. Эти типы элементов можно использовать в качестве параметров для задач, в которых с помощью отдельных элементов выполняются этапы процесса построения.
При объявлении элементов можно использовать подстановочные знаки; элементы могут содержать дополнительные метаданные для расширенных сценариев построения. Дополнительные сведения об элементах см. в разделе Элементы.
Задачи
Задачи — это блоки исполняемого кода, с помощью которых в проектах MSBuild выполняются операции построения. Например, в задаче может выполняться компиляция входных файлов или запускаться внешняя программа. Созданные задачи могут использоваться совместно и многократно разными разработчиками в различных проектах.
Алгоритм выполнения задачи записан в управляемом коде и сопоставлен с MSBuild с помощью элемента UsingTask. Для создания собственной задачи можно разработать управляемый тип, реализующий интерфейс ITask. Дополнительные сведения о способах создания задач см. в руководстве по написанию задач.
MSBuild включает стандартные задачи, которые можно изменять в соответствии с требованиями. Примеры: Copy — копирование файлов, MakeDir — создание каталогов, Csc — компиляция файлов исходного кода Visual C#. Список доступных задач и сведения об их использовании см. в справочнике по задачам.
Дополнительные сведения о задачах см. в разделе Задачи.
Целевые объекты
Целевые объекты позволяют группировать задачи в определенном порядке и использовать разделы файла проекта в качестве точек входа в процесс построения. Целевые объекты часто группируются в логические разделы, чтобы повысить удобочитаемость и расширяемость. Благодаря разбиению действий построения на множество целевых объектов можно вызывать один фрагмент процесса построения из других целевых объектов, не создавая при этом копии соответствующего раздела кода в каждом целевом объекте. Например, если требуется создать ссылки для нескольких точек входа в процесс сборки, можно создать целевой объект, который выполняет сборку ссылок, и выполнять этот целевой объект из каждой нужной точки входа.
В более сложных сценариях целевые объекты могут использоваться для описания связей друг с другом и выполнять анализ зависимостей, что позволяет пропускать целые разделы процесса сборки, если такой целевой объект актуален. Дополнительные сведения о целевых объектах см. в разделе Целевые объекты.
Журналы сборки
Ошибки, предупреждения и сообщения журнала сборки можно выводить на консоль или на другое устройство вывода. Дополнительные сведения см. в руководствах по получению журналов сборки и ведению журналов в MSBuild.
Использование MSBuild в Visual Studio
Visual Studio использует формат файла проекта MSBuild для хранения данных сборки об управляемых объектах. Параметры проекта, добавленные или измененные с помощью интерфейса Visual Studio, отражаются в файле .*proj, который создается для каждого проекта. Для построения управляемых проектов в Visual Studio используется размещенный экземпляр MSBuild. Это означает, что выполнить построение управляемого проекта можно в Visual Studio или в командной строке (даже при отсутствии Visual Studio), и результаты будут одинаковыми.
Настройка для различных версий
Ниже приведены несколько преимуществ настройки для различных версий:
Можно ориентироваться на профиль платформы, который представляет собой предопределенное подмножество целевой платформы.
Дополнительные сведения см. в разделе Настройка для различных версий.
См. также
Заголовок | Описание |
---|---|
Пошаговое руководство: Создание файла проекта MSBuild с нуля | Содержит описание способов пошагового создания основного файла проекта путем использования только текстового редактора. |
Пошаговое руководство: Использование MSBuild | Содержит вводную информацию о стандартных блоках MSBuild и описание способов записи, управления и отладки проектов MSBuild без выхода из интегрированной среды разработки Visual Studio. |
Основные понятия MSBuild | Содержит информацию о четырех стандартных блоках MSBuild: свойствах, элементах, целевых объектах и задачах. |
Элементы | Содержит описание общих понятий, относящихся к формату файлов MSBuild, и способов взаимодействия фрагментов. |
Свойства MSBuild | Содержит вводную информацию о свойствах и коллекциях свойств. Свойства представляют собой пары ключ-значение, с помощью которых выполняется настройка сборок. |
Целевые объекты | Содержит объяснение группировки задач в определенном порядке и вызова разделов процесса построения из командной строки. |
Задачи | Описывает процесс создания блока исполняемого кода, с помощью которого MSBuild выполняет атомарные операции построения. |
Условия | Рассматривает использование атрибута Condition в элементе MSBuild. |
Дополнительные возможности | Содержит информацию о пакетной обработке, выполнении преобразований, использовании нескольких целевых платформ и других дополнительных возможностях. |
Ведение журнала в MSBuild | Описание возможностей записи в журнал событий, сообщений и ошибок сборки. |
Как MSBuild выполняет сборку проектов | Описывает внутренний процесс сборки, используемый в MSBuild. |
Дополнительные ресурсы | Содержит список ресурсов сообщества и службы поддержки с дополнительной информацией о MSBuild. |
Справочник
Справочные сведения о MSBuild
Содержит ссылки на разделы, содержащие справочную информацию.
Глоссарий
Содержит определения общих терминов MSBuild.
Источник
Что такое msbuild.exe? Это безопасно или вирус? Как удалить или исправить это
Что такое msbuild.exe?
msbuild.exe это исполняемый файл, который является частью Windows 8 Consumer Preview ISO-образы разработанный Microsoft, Версия программного обеспечения для Windows: 1.0.0.0 обычно 84744 в байтах, но у вас может отличаться версия.
Msbuild.exe безопасный или это вирус или вредоносная программа?
Первое, что поможет вам определить, является ли тот или иной файл законным процессом Windows или вирусом, это местоположение самого исполняемого файла. Например, для msbuild.exe его путь будет примерно таким: C: Program Files Microsoft Windows 8 Consumer Preview ISO images msbuild.exe
Если статус процесса «Проверенная подписывающая сторона» указан как «Невозможно проверить», вам следует взглянуть на процесс. Не все хорошие процессы Windows имеют метку проверенной подписи, но ни один из плохих.
Самые важные факты о msbuild.exe:
Если у вас возникли какие-либо трудности с этим исполняемым файлом, вы должны определить, заслуживает ли он доверия, перед удалением msbuild.exe. Для этого найдите этот процесс в диспетчере задач.
Найти его местоположение и сравнить размер и т. Д. С приведенными выше фактами
Если вы подозреваете, что можете быть заражены вирусом, вы должны немедленно попытаться это исправить. Чтобы удалить вирус msbuild.exe, необходимо скачайте и установите приложение полной безопасности, как это, Обратите внимание, что не все инструменты могут обнаружить все типы вредоносных программ, поэтому вам может потребоваться попробовать несколько вариантов, прежде чем вы добьетесь успеха.
Могу ли я удалить или удалить msbuild.exe?
Не следует удалять безопасный исполняемый файл без уважительной причины, так как это может повлиять на производительность любых связанных программ, использующих этот файл. Не забывайте регулярно обновлять программное обеспечение и программы, чтобы избежать будущих проблем, вызванных поврежденными файлами. Что касается проблем с функциональностью программного обеспечения, проверяйте обновления драйверов и программного обеспечения чаще, чтобы избежать или вообще не возникало таких проблем.
Однако, если это не вирус, и вам нужно удалить msbuild.exe, вы можете удалить образы Windows 8 Consumer Preview ISO с вашего компьютера с помощью программы удаления. Если вы не можете найти его деинсталлятор, вам может потребоваться удалить ISO-образы Windows 8 Consumer Preview, чтобы полностью удалить msbuild.exe. Вы можете использовать функцию «Установка и удаление программ» на панели управления Windows.
Распространенные сообщения об ошибках в msbuild.exe
Наиболее распространенные ошибки msbuild.exe, которые могут возникнуть:
• «Ошибка приложения msbuild.exe».
• «Ошибка msbuild.exe».
• «msbuild.exe столкнулся с проблемой и должен быть закрыт. Приносим извинения за неудобства.»
• «msbuild.exe не является допустимым приложением Win32».
• «msbuild.exe не запущен».
• «msbuild.exe не найден».
• «Не удается найти msbuild.exe».
• «Ошибка запуска программы: msbuild.exe».
• «Неверный путь к приложению: msbuild.exe».
Как исправить msbuild.exe
Если у вас возникла более серьезная проблема, постарайтесь запомнить последнее, что вы сделали, или последнее, что вы установили перед проблемой. Использовать resmon Команда для определения процессов, вызывающих вашу проблему. Даже в случае серьезных проблем вместо переустановки Windows вы должны попытаться восстановить вашу установку или, в случае Windows 8, выполнив команду DISM.exe / Online / Очистка-изображение / Восстановить здоровье, Это позволяет восстановить операционную систему без потери данных.
Чтобы помочь вам проанализировать процесс msbuild.exe на вашем компьютере, вам могут пригодиться следующие программы: Менеджер задач безопасности отображает все запущенные задачи Windows, включая встроенные скрытые процессы, такие как мониторинг клавиатуры и браузера или записи автозапуска. Единый рейтинг риска безопасности указывает на вероятность того, что это шпионское ПО, вредоносное ПО или потенциальный троянский конь. Это антивирус обнаруживает и удаляет со своего жесткого диска шпионское и рекламное ПО, трояны, кейлоггеры, вредоносное ПО и трекеры.
Обновленный октябрьский 2022:
Мы рекомендуем вам попробовать этот новый инструмент. Он исправляет множество компьютерных ошибок, а также защищает от таких вещей, как потеря файлов, вредоносное ПО, сбои оборудования и оптимизирует ваш компьютер для максимальной производительности. Это исправило наш компьютер быстрее, чем делать это вручную:
Загрузите или переустановите msbuild.exe
Вход в музей Мадам Тюссо не рекомендуется загружать файлы замены exe с любых сайтов загрузки, так как они могут содержать вирусы и т. д. Если вам нужно скачать или переустановить msbuild.exe, мы рекомендуем переустановить основное приложение, связанное с ним Windows 8 Consumer Preview ISO-образы.
Информация об операционной системе
Ошибки msbuild.exe могут появляться в любых из нижеперечисленных операционных систем Microsoft Windows:
Источник
Пошаговое руководство. Использование MSBuild
MSBuild является платформой сборки для корпорации Майкрософт и Visual Studio. Это практическое руководство содержит вводную информацию о стандартных блоках MSBuild и описывает способы записи и отладки проектов MSBuild, а также управления ими. Здесь рассматриваются следующие вопросы:
создание файла проекта и работа с ним;
использование свойств сборки;
использование элементов сборки.
MSBuild можно запустить в Visual Studio или из командного окна. В этом пошаговом руководстве вы создадите файл проекта MSBuild с помощью Visual Studio. Вы отредактируете файл проекта в Visual Studio и с помощью командного окна выполните сборку проекта и просмотрите результаты.
Установка MSBuild
Если у вас есть Visual Studio, то MSBuild уже установлен. Чтобы установить MSBuild 15 в системе, не имеющей Visual Studio, перейдите на страницу загрузки более ранних версий Visual Studio, разверните пункт Visual Studio 2017 и нажмите кнопку Загрузить. Если у вас есть подписка Visual Studio, выполните вход и найдите ссылку для загрузки последней версии Build Tools для Visual Studio 2017. Если у вас нет подписки Visual Studio, вы по-прежнему можете установить последнюю версию средств сборки. На этой странице с помощью средства выбора версии переключитесь на страницу для версии 2019 и следуйте инструкциям по установке.
Если у вас есть Visual Studio, то MSBuild уже установлен. В Visual Studio 2019 и последующих средства сборки устанавливаются в папку установки Visual Studio. Для обычной установки по умолчанию в Windows 10 файл MSBuild.exe находится в папке установки MSBuildCurrentBin.
Убедитесь, что в установщике выбраны средства MSBuild для используемых рабочих нагрузок, затем нажмите кнопку Установить.
Если у вас есть Visual Studio, то MSBuild уже установлен. В Visual Studio 2022 средства сборки устанавливаются в папку установки Visual Studio. Для обычной установки по умолчанию в Windows 10 файл MSBuild.exe находится в папке установки MSBuildCurrentBin.
В установщике Visual Studio перейдите в раздел Отдельные компоненты и найдите флажок для MSBuild. Он выбирается автоматически при выборе любой из других рабочих нагрузок для установки.
Создание проекта MSBuild
Система проектов Visual Studio основана на MSBuild. Это упрощает создание файла проекта с помощью Visual Studio. В этом разделе создается файл проекта Visual C#. Вместо него можно выбрать создание файла проекта Visual Basic. В контексте данного пошагового руководства различия между двумя файлами проекта незначительны.
Создание файла проекта
Откройте Visual Studio и создайте проект.
В поле поиска, введите winforms, затем выберите Create a new Windows Forms App (.NET Framework) (Создать новое приложение Windows Forms (.NET Framework)). В появившемся диалоговом окне выберите Создать.
Щелкните ОК или Создать, чтобы создать файл проекта.
Анализ файла проекта
В предыдущем разделе вы использовали Visual Studio для создания файла проекта Visual C#. Файл проекта представлен в обозревателе решений узлом проекта с именем BuildApp. Чтобы проанализировать файл проекта, можно использовать редактор кода Visual Studio.
Анализ файла проекта
В обозревателе решений выберите узел проекта BuildApp.
В браузере Свойства обратите внимание, что свойство Файл проекта имеет значение BuildApp.csproj. В именах всех файлов проектов указан суффикс proj. Если вы создали проект Visual Basic, файлу проекта будет задано имя BuildApp.vbproj.
Еще раз щелкните правой кнопкой мыши узел проекта, а затем выберите Изменить BuildApp.csproj.
Файл проекта откроется в редакторе кода.
Для некоторых типов проектов, например C++, необходимо выгрузить проект, прежде чем можно будет открыть и изменить файл проекта. Чтобы выгрузить проект, щелкните правой кнопкой мыши файл проекта и выберите Выгрузить проект.
Целевые объекты и задачи
Файлы проекта представляют собой файлы в формате XML с корневым узлом Проект.
Для проектов не в стиле SDK необходимо указать пространство имен xmlns в элементе «Проект». Если атрибут ToolsVersion присутствует в новом проекте, он должен соответствовать версии MSBuild. Если версия MSBuild вам неизвестна, вы можете получить ее из первых двух чисел в выходных данных следующей командной строки (например, 16.0):
Создание приложения выполняется с помощью элементов Целевой объект и Задача.
Задача — это наименьшая единица работы или, другими словами, атом сборки. Задачи являются независимыми исполняемыми компонентами, которые могут иметь входные и выходные данные. Сейчас в проекте отсутствуют определенные задачи или задачи, на которые существуют ссылки. Процедура добавления задач в файл проекта описывается в следующих разделах. Дополнительные сведения см. в статье о задачах.
Целевой объект представляет собой именованную последовательность задач. Дополнительные сведения см. в статье о целевых объектах.
[это может быть именованная последовательность задач, но крайне важно то, что она представляет собой что-то, что должно быть создано или выполнено, поэтому ее необходимо определить с помощью подхода, ориентированного на цели]
Целевой объект по умолчанию не определен в файле проекта. Вместо этого он задан в импортированных проектах. Элемент Import указывает импортированные проекты. Например, в проекте C# целевой объект по умолчанию импортируется из файла Microsoft.CSharp.targets.
Импортированные файлы вставляются в файл проекта везде, где на них указывает ссылка.
В проектах в стиле SDK вы не увидите этого элемента Import, так как атрибут SDK приводит к неявному импорту этого файла.
MSBuild отслеживает целевые объекты сборки и гарантирует, что каждый целевой объект будет построен не более одного раза.
Добавление целевого объекта и задачи
Добавьте целевой объект в файл проекта. Добавьте задачу в целевой объект, который выводит сообщение.
Добавление целевого объекта и задачи
Добавьте следующие строки в файл проекта сразу после инструкции Import или после начала элемента Project.
Будет создан целевой объект с именем HelloWorld. Обратите внимание, что во время редактирования файла проекта доступна поддержка IntelliSense.
Добавьте строки в целевой объект HelloWorld, чтобы в результате раздел выглядел следующим образом:
Сохраните файл проекта.
Задача Message является одной из многих, входящих в комплект поставки MSBuild. Полный список доступных задач и сведения об их использовании см. в статье Справочные сведения о задачах MSBuild.
Задача Message принимает строковое значение атрибута Text в качестве входных данных и отображает его в устройстве вывода (или записывает его в один или несколько журналов, если применимо). Целевой объект HelloWorld выполняет задачу Message дважды: сначала для отображения Hello, а затем для отображения World.
Создание целевого объекта
Если вы попытаетесь выполнить сборку этого проекта из Visual Studio, определенный вами целевой объект не будет создан. Это связано с тем, что Visual Studio выбирает целевой объект по умолчанию, а это по-прежнему тот объект, который находится в импортированном файле .targets.
В следующих разделах мы будем называть командную строку разработчика командным окном.
Создание целевого объекта
Откройте командное окно.
Если вам нужно найти средство вручную, найдите файл LaunchDevCmd.bat в папке Common7Tools.
В командном окне перейдите в папку, содержащую файл проекта. В данном случае это D:BuildAppBuildApp.
Изучите выходные данные в окне командной строки. Вы должны увидеть две строки — Hello и World:
Переключаясь между редактором кода и командной строкой, можно изменять файл проекта и сразу же видеть результаты.
Свойства сборки
Свойства сборки являются парами «имя — значение», управляющими сборкой. В верхней части файла проекта уже определено несколько свойств сборки:
Все свойства являются дочерними элементами по отношению к элементам PropertyGroup. Имя свойства — это имя дочернего элемента, а значение свойства — это текстовый элемент дочернего элемента. Например, примененная к объекту директива
определяет свойство с именем TargetFrameworkVersion, задавая ему строковое значение «v4.5».
Свойства сборки можно переопределить в любое время. If
появляется далее в файле проекта или в файле, позже импортированном в файл проекта, свойство TargetFrameworkVersion принимает новое значение v3.5.
Анализ значения свойства
Чтобы получить значение свойства, используйте следующий синтаксис, где PropertyName — имя свойства:
С помощью этого синтаксиса проанализируйте некоторые свойства в файле проекта.
Анализ значения свойства
В редакторе кода замените целевой объект HelloWorld следующим кодом:
Сохраните файл проекта.
В командном окне введите и выполните следующую строку:
Проанализируйте результат. Вы должны увидеть следующие две строки (ваши выходные данные могут отличаться):
Условные свойства
означает: «Если свойство Configuration еще не определено, определите его и присвойте ему значение Debug».
Атрибут Condition может быть почти у всех элементов MSBuild. Дополнительные сведения об использовании атрибута Condition см. в статье об условиях.
Зарезервированные свойства
Переменные среды
Задание свойств из командной строки
Настройка значения свойства из командной строки
В командном окне введите и выполните следующую строку:
Проанализируйте результат. Вы должны увидеть следующую строку:
MSBuild создает свойство Configuration и присваивает ему значение Release.
Специальные символы
Измените задачу Message, чтобы отображать значение свойства Configuration со специальными символами для удобства чтения.
Использование специальных символов в задаче Message
В редакторе кода замените обе задачи Message следующей строкой:
Сохраните файл проекта.
В командном окне введите и выполните следующую строку:
Проанализируйте результат. Вы должны увидеть следующую строку:
Дополнительные сведения см. в статье Специальные символы в MSBuild.
Элементы сборки
Элемент — это часть данных, обычно имя файла, которая используется в качестве входных данных для системы сборки. Например, коллекцию элементов, представляющую исходные файлы, можно передать в задачу Compile, чтобы скомпилировать их в сборку.
Все элементы являются дочерними элементами по отношению к элементам ItemGroup. Именем элемента является имя дочернего элемента, а значением — значение атрибута Include дочернего элемента. Значения элементов с одинаковым именем собираются в типы элементов с таким именем. Например, примененная к объекту директива
определяет группу элементов, содержащую два элемента. Тип элемента Compile имеет два значения: Program.cs и PropertiesAssemblyInfo.cs.
Следующий код создает тот же тип элементов посредством объявления обоих файлов в одном атрибуте Include, разделенных точкой с запятой.
Дополнительные сведения см. в разделе Элементы.
Пути к файлам задаются относительно папки, содержащей файл проекта MSBuild, даже если файл проекта является импортированным. Существует несколько исключений, например при использовании элементов Import и UsingTask.
Анализ значений типа элемента
Чтобы получить значения типа элемента, используйте следующий синтаксис, где ItemType — это имя типа элемента:
С помощью этого синтаксиса проанализируйте тип элемента Compile в файле проекта.
Анализ значений типа элемента
В редакторе кода замените целевую задачу HelloWorld следующим кодом:
Сохраните файл проекта.
В командном окне введите и выполните следующую строку:
Проанализируйте результат. Вы должны увидеть следующую строку:
По умолчанию значения типа элемента разделены точкой с запятой.
Чтобы изменить разделитель типа элемента, используйте следующий синтаксис, где ItemType — это тип элемента, а Separator — это строка из одного или нескольких разделительных символов:
Измените задачу Message для использования символов возврата каретки и перевода строки (%0A%0D) для отображения элементов Compile по одному в строке.
Отображение значений типов элементов по одному в строке
В редакторе кода замените задачу Message следующей строкой:
Сохраните файл проекта.
В командном окне введите и выполните следующую строку:
Проанализируйте результат. Должны отобразиться следующие строки:
Атрибуты Include, Exclude и подстановочные знаки
Можно использовать подстановочные знаки «*», «**» и «?» с атрибутом Include, чтобы добавить элементы к типу элемента. Например, примененная к объекту директива
добавляет все файлы с расширением файла .jpeg в папке изображений к типу элемента Photos, тогда как
добавляет все файлы с расширением файла .jpeg в папке изображений и всех ее вложенных папках к типу элемента Photos. Дополнительные примеры см. в статье Практическое руководство. Выбор файлов для сборки.
Обратите внимание, что, так как элементы объявлены, они добавляются к типу элемента. Например, примененная к объекту директива
создает тип элемента Photo, содержащий все файлы в папке изображений с расширением .jpeg или .gif. Это эквивалентно следующей строке:
С помощью атрибута Exclude можно исключить элемент из типа элемента. Например, примененная к объекту директива
добавляет все файлы с расширением .cs в тип элемента Compile, за исключением файлов, имена которых содержат строку Designer. Дополнительные примеры см. в статье Практическое руководство. Исключение файлов из сборки.
Атрибут Exclude применяется только к элементам, добавленным с помощью атрибута Include в элемент, содержащий их оба. Например, примененная к объекту директива
не исключит файл Form1.cs, добавленный в предыдущий элемент.
Включение и исключение элементов
В редакторе кода замените задачу Message следующей строкой:
Добавьте эту группу элементов сразу после элемента Import:
Сохраните файл проекта.
В командном окне введите и выполните следующую строку:
Проанализируйте результат. Вы должны увидеть следующую строку:
Помимо сведений, собранных из атрибутов Include и Exclude, элементы могут содержать метаданные. Эти метаданные могут использоваться задачами, требующими дополнительных сведений об элементах, а не просто их значений.
Для объявления элементов в файле проекта создается элемент с именем метаданных, являющийся дочерним по отношению к элементу. Элемент может содержать нуль или более значений метаданных. Например, следующий элемент CSFile содержит метаданные Culture со значением Fr:
Чтобы получить значение метаданных типа элемента, используйте следующий синтаксис, где ItemType — это имя типа элементов, а MetaDataName — имя метаданных:
Анализ метаданных элементов
В редакторе кода замените задачу Message следующей строкой:
Сохраните файл проекта.
В командном окне введите и выполните следующую строку:
Проанализируйте результат. Должны отобразиться следующие строки:
Обратите внимание, что фраза Compile.DependentUpon появляется несколько раз. Использование метаданных с таким синтаксисом в целевом объекте приводит к пакетной обработке. Пакетная обработка означает, что задачи в целевом объекте выполняются один раз для каждого уникального значения метаданных. Это является эквивалентом скрипта MSBuild общей конструкции программирования for loop. Дополнительные сведения см. в статье Пакетная обработка.
Стандартные метаданные
Всякий раз, когда элемент добавляется в список элементов, ему назначаются некоторые стандартные метаданные. Например %(Filename) возвращает имя файла любого элемента. Полный список стандартных метаданных см. в статье Общеизвестные метаданные элементов MSBuild.
Анализ стандартных метаданных
В редакторе кода замените задачу Message следующей строкой:
Сохраните файл проекта.
В командном окне введите и выполните следующую строку:
Проанализируйте результат. Должны отобразиться следующие строки:
Сравнивая два приведенных выше примера, можно увидеть, что, хотя не у каждого элемента в типе элемента Compile имеются метаданные DependentUpon, у всех элементов есть стандартные метаданные Filename.
Преобразования метаданных
Списки элементов могут быть преобразованы в новые списки элементов. Чтобы преобразовать список элементов, используйте следующий синтаксис, где — это имя типа элементов, а — имя метаданных:
Преобразование элементов с помощью метаданных
В редакторе кода замените задачу Message следующей строкой:
Сохраните файл проекта.
В командном окне введите и выполните следующую строку:
Проанализируйте результат. Вы должны увидеть следующую строку:
Обратите внимание, что выраженные в этом синтаксисе метаданные не приводят к пакетной обработке.
Следующие шаги
Пошаговые инструкции по созданию файла простого проекта см. в статье Пошаговое руководство. Создание файла проекта MSBuild с нуля.
Источник