Сбой msbuild с отсутствующим именем типа или пространства имен - PullRequest
0 голосов
/ 27 марта 2020

У меня есть C# проект (csproj) и решение (sln), которое я хочу построить с помощью msbuild.exe.

$ msbuild.exe foo.sln /m /t:Build /p:Configuration="Release"

Это не удается с несколькими ошибками, подобными приведенным здесь:

(CoreCompile target) ->
     AppComboCommand.cs(9,7): error CS0246: The type or namespace name 'EnvDTE' could not be found
(are you missing a using directive or an assembly reference?) [foo.csproj]

Эти ошибки go исчезли после того, как я открыл проект в Visual Studio 2019 и затем снова собрал через командную строку. VS, кажется, генерирует несколько файлов при открытии проекта, и мне интересно, что мне здесь не хватает. Может быть, это проблема зависимости?

Любая помощь высоко ценится

1 Ответ

0 голосов
/ 27 марта 2020

EnvDTE - это просто ds vs sdk для расширения функциональности Visual Studio, и обычно она хранится в локальной папке vs.

Во-первых, вы должны убедиться, что вы установили * Сначала 1005 * рабочих нагрузок. Если вы используете Build Tool для VS2019, вы также должны не забыть проверить его.

enter image description here

Пожалуйста, следуйте этим инструкциям:

1) Если вы ссылаетесь на эту DLL в локальной области, пожалуйста, убедитесь, что вы ссылались на нее, щелкнув правой кнопкой мыши на проекте -> Add Reference -> ссылка C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\PublicAssemblies\envdte.dll.

  • Этот подход ниже не рекомендуется, и для ссылок DLL SDK против использования nuget рискованно:

    Если вы используете nuget для установки, EnvDTE, который существует в nuget.org, когда вы собираете его из командной строки, вы должны сначала запустить nuget restore MySolution.sln. Командная строка MSBuild не восстановит отсутствующие пакеты, и это не является ее работой.

Поэтому, пожалуйста, сначала загрузите nuget.exe , а затем добавьте это в сценарий:

$nuget="xxxxx\nuget.exe(the local path of the nuget.exe)"

$nuget restore `xxxxx\MySolution.sln`

Затем выполните процесс сборки.

2) Я обнаружил, что вы используете сценарий powershell для сборки проекта, поэтому, пожалуйста, убедитесь, что вы используете MSBuild для VS2019 не из Net Framework (C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe).

$msbuild.exe="C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\MSBuild.exe"

Если вы устанавливаете Build Tool для VS2019 , вы должны использовать этот путь:

C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\MSBuild\Current\Bin\MSBuild.exe

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...