Ошибка инициализации задачи DownloadNuGet: незарегистрированная задача DownloadNuGet

Я пытаюсь скомпилировать приложение С# с помощью Mono на Ubuntu. Я пытаюсь предотвратить включение nuget.exe в мой репозиторий git и выполнил принятый ответ в этот вопрос

Это работает, если я использую Visual Studio 2010. Когда я создаю приложение, nuget.exe загружается, как ожидалось.

Однако, когда я пытаюсь использовать mono и xbuild, я получаю следующую ошибку.

Target Build:
    Project "/home/builduser/SpecialBuildProj/BuildTrade/BuildTrade.csproj" (default target(s)):
    Target CheckPrerequisites:
        Project "/home/builduser/SpecialBuildProj/.nuget/NuGet.targets" (_DownloadNuGet target(s)):
            Target _DownloadNuGet:
: error : Error initializing task DownloadNuGet: Not registered task DownloadNuGet.
            Task "DownloadNuGet" execution -- FAILED
            Done building target "_DownloadNuGet" in project "/home/builduser/SpecialBuildProj/.nuget/NuGet.targets".-- FAILED
        Done building project "/home/builduser/SpecialBuildProj/.nuget/NuGet.targets".-- FAILED
    Task "MsBuild" execution -- FAILED
    Done building target "CheckPrerequisites" in project "/home/builduser/SpecialBuildProj/BuildTrade/BuildTrade.csproj".-- FAILED
    Done building project "/home/builduser/SpecialBuildProj/BuildTrade/BuildTrade.csproj".-- FAILED
Task "MSBuild" execution -- FAILED
Done building target "Build" in project "/home/builduser/SpecialBuildProj/SpecialBuildProj.sln".-- FAILED
Done building project "/home/builduser/SpecialBuildProj/SpecialBuildProj.sln".-- FAILED

Единственное, что я изменил, это установить DownloadNuGetExe= true в nuget.targets, так что строка выглядит так:

<DownloadNuGetExe Condition=" '$(DownloadNuGetExe)' == '' ">true</DownloadNuGetExe>

Мой вопрос: Как я могу установить его так, чтобы поведение с использованием mono/xbuild было таким же, как при использовании Visual Studio (а именно, что nuget загружается автоматически)?

Edit Это строка UsingTask, которая появляется в файле nuget.targets.

<UsingTask TaskName="DownloadNuGet" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll">
    <ParameterGroup>
        <OutputFilename ParameterType="System.String" Required="true" />
    </ParameterGroup>
    <Task>
        <Reference Include="System.Core" />
        <Using Namespace="System" />
        <Using Namespace="System.IO" />
        <Using Namespace="System.Net" />
        <Using Namespace="Microsoft.Build.Framework" />
        <Using Namespace="Microsoft.Build.Utilities" />
        <Code Type="Fragment" Language="cs">
            <![CDATA[
            try {
                OutputFilename = Path.GetFullPath(OutputFilename);

                Log.LogMessage("Downloading latest version of NuGet.exe...");
                WebClient webClient = new WebClient();
                webClient.DownloadFile("https://nuget.org/nuget.exe", OutputFilename);

                return true;
            }
            catch (Exception ex) {
                Log.LogErrorFromException(ex);
                return false;
            }
        ]]>
        </Code>
    </Task>
</UsingTask>

Ответ 1

Создайте script, чтобы загрузить его. Например.

wget http://nuget.org/nuget.exe
cp nuget.exe ./.nuget/NuGet.exe
chmod a+x ./.nuget/NuGet.exe

Это позволит обновить NuGet.exe. Источник

Ответ 2

Это по-прежнему представляет собой проблему с Xamarin Studio для бизнеса и MacOS. Я столкнулся с этой ошибкой, пытаясь построить SDK для Facebook. Мне нужно было удалить целевые ссылки NuGet в файле проекта, чтобы сделать сборку проекта. Xamarin Studio имеет встроенное в него обновление NuGet, поэтому мне удалось загрузить пакеты вручную.