Jer*_*oen 71 version-control visual-studio nuget
一些上下文:
我已经按照教程使用NuGet而没有提交包有一些成功.通过手动添加和为nuget.targets文件解决这个NuGet问题后,事情正在发挥作用.<RestorePackages>
<Import ...>
但是,一旦我用Mercurial克隆了存储库,我在构建时遇到以下错误:
无法找到'C:\ ...\Visual Studio 2010\Projects\MyProject\.nuget \nuget.exe'
这是有道理的,因为我的忽略模式阻止我检查exe文件.从这个相关的SO问题我推断出在版本控制中使用这个文件并不常见(或者是吗?),但是我真的不想将NuGet.exe提交给版本控制,如果我可以帮助的话.
问题:是否有方便的方法来防止需要检查NuGet.exe?
我尝试了一些谷歌,浏览文档,摆弄NuGet.targets文件,到目前为止没有运气.如果我可以动态地指向构建解决方案的特定环境的NuGet.exe似乎更可取.
我知道我可以添加exe文件,但我更愿意知道是否有其他方法来处理这个问题,或者知道为什么没有可行的替代方案.
更新:
nuget.targets文件包含一些相关的xml:
<!-- only (relevant) parts of the xml shown below -->
<DownloadNuGetExe Condition=" '$(DownloadNuGetExe)' == '' ">false</DownloadNuGetExe>
...
<UsingTask TaskName="DownloadNuGet" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll">
<Task>
<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>
Run Code Online (Sandbox Code Playgroud)
我不熟悉.targets文件的工作方式,但这似乎与我正在寻找的方式相符.随着我的牛仔编码帽子我试图改变false
以true
在DownloadNuGetExe元素,但如预期(有或无的状态属性),并没有工作.
Pav*_*shy 120
刚检查:nuget.targets是一个msbuild文件.你是在正确的方式,在:
<DownloadNuGetExe Condition=" '$(DownloadNuGetExe)' == '' ">false</DownloadNuGetExe>
Run Code Online (Sandbox Code Playgroud)
将值更改为true:
<DownloadNuGetExe Condition=" '$(DownloadNuGetExe)' == '' ">true</DownloadNuGetExe>
Run Code Online (Sandbox Code Playgroud)
但是,必须重新启动Visual Studio或重新加载解决方案(请参阅注释)才能生效.
sha*_*tor 12
查看该.targets
文件,如果您既不想登记也不想NuGet.exe
每次都下载,还有另一种方法可以执行此操作.关键是这样的:
<NuGetExePath Condition=" '$(NuGetExePath)' == '' ">$(NuGetToolsPath)\nuget.exe</NuGetExePath>
Run Code Online (Sandbox Code Playgroud)
遵循MSBuild约定只设置属性(如果尚未定义),此值默认为解决方案的本地副本NuGet.exe
,如果DownloadNuGetExe
属性为,则下载它true
.但是环境变量可以覆盖MSBuild属性.
如果你已经拥有的NuGet下载到一些中央位置,你可以离开DownloadNuGetExe
的false
,并定义称为一个环境变量NUGETEXEPATH
,它会被替代.
归档时间: |
|
查看次数: |
33868 次 |
最近记录: |