Proxy 使用内联MSBuild任务从代理后面下载NuGet

Proxy 使用内联MSBuild任务从代理后面下载NuGet,proxy,nuget,webclient,msbuild-task,defaultnetworkcredentials,Proxy,Nuget,Webclient,Msbuild Task,Defaultnetworkcredentials,我正在使用NuGet中的NuGet.targets文件自动下载NuGet.exe,然后还原项目中的数据包 这是工作得很好,但在工作中,我们有一个代理,由于(407)代理身份验证要求异常,此方法失败。我修改了目标文件以使用代理详细信息,尽管此方法在应用程序中有效,但在MSBuild任务中无效,但代码是相同的 如果我对代理和登录详细信息进行硬编码,则在构建解决方案时,会下载NuGet.exe并正确还原包。问题似乎只是MSBuild任务中的身份验证,我完全不知道为什么。我已经附上了我修改过的代码 如果

我正在使用NuGet中的NuGet.targets文件自动下载NuGet.exe,然后还原项目中的数据包

这是工作得很好,但在工作中,我们有一个代理,由于(407)代理身份验证要求异常,此方法失败。我修改了目标文件以使用代理详细信息,尽管此方法在应用程序中有效,但在MSBuild任务中无效,但代码是相同的

如果我对代理和登录详细信息进行硬编码,则在构建解决方案时,会下载NuGet.exe并正确还原包。问题似乎只是MSBuild任务中的身份验证,我完全不知道为什么。我已经附上了我修改过的代码

如果有人能帮忙,我将不胜感激。谢谢

 <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...");

                using(WebClient webClient = new WebClient())
                {
                  webClient.UseDefaultCredentials = true;
                  webClient.Proxy = WebRequest.GetSystemWebProxy();
                  webClient.Proxy.Credentials = CredentialCache.DefaultNetworkCredentials;
                  webClient.DownloadFile("https://www.nuget.org/nuget.exe", OutputFilename);

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