visual-studio-2010 - 初始化任务 DownloadNuGet 时出错 : Not registered task DownloadNuGet

标签 visual-studio-2010 mono nuget xbuild

我正在尝试在 Ubuntu 上使用 Mono 通过 C# 应用程序进行编译。我试图防止需要在我的 git 存储库中包含 nuget.exe ,并遵循 this question 中接受的答案。

如果我使用 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

我唯一更改的是在 nuget.targets 中设置 DownloadNuGetExe = true,因此该行如下所示:

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

我的问题: 如何设置才能使使用 mono/xbuild 的行为与使用 Visual Studio 时的行为相同(即自动下载 nuget)?

编辑 这是出现在 NuGet.targets 文件中的 UsingTask 行。

<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>

最佳答案

创建一个脚本来下载它。例如

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

这可以使您的 NuGet.exe 保持最新状态。 Source

关于visual-studio-2010 - 初始化任务 DownloadNuGet 时出错 : Not registered task DownloadNuGet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17715112/

相关文章:

c# - 从 C# 进行 Excel 操作 - 设置 ActiveCell?

azure - 依赖项被复制到 Azure DevOps 中的私有(private)源

visual-studio-2010 - NuGet - 下载带有调试信息和 .pdb 文件的 .dll

visual-studio-2010 - 努盖特 2.7 : "an error occurred while processing this request"

visual-studio-2010 - 宏不在 Visual Studio 2010 中运行

c++ - 我应该将现有的 MFC 项目转换为哪个工具包?

c# - 异常: System. ComponentModel.Win32Exception : Invalid data at System. Diagnostics.Process.Start_shell

c# - 显示表单会锁定单声道

linux - Mono 在 Ubuntu 上抛出 OutOfMemoryException,但在 OSX 或 Windows 上则不会

visual-studio-2010 - RDLC将本地报告导出为CSV