UbuntuでMonoを使用してC#アプリケーションでコンパイルしようとしています。私は私のgitリポジトリにnuget.exe
を含める必要性を防ぐためにしようとしています。これは、私がアプリケーションを構築するとき、私は、Visual Studio 2010を使用していた場合、nuget.exeが期待通りにダウンロードされる作品this questionタスクを初期化中にエラーが発生しました。DownloadNuGet:Not registered task DownloadNuGet
に受け入れ答えに従っています。
ただし、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
中= true
DownloadNuGetExe
を設定されています
<DownloadNuGetExe Condition=" '$(DownloadNuGetExe)' == '' ">true</DownloadNuGetExe>
私の質問: 私はそれを設定することができますどのようにmono/xbuildを使用した動作は、Visual Studioを使用する場合と同じです(つまり、そのナゲットは自動的にダウンロードされます)。
編集 これは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>
NuGet.exeを手動でダウンロードすると、xbuildでNuGetを使用する際に手早く手を加えることができました。すぐ次の問題は、NuGet.exeが信頼できない証明書のためにパッケージをダウンロードできなかったことです。解決策はここにあります:http://stackoverflow.com/questions/15181888/nuget-on-linux-error-getting-response-stream – vvnurmi