Sco*_*ein 87 msbuild version-control nuget
在NuGet之前,检查项目中使用的所有外部DLL是常见的"最佳实践".通常在一个Libs
或3rdParty
目录中.
在使用NuGet时,我是否应该在packages
目录中办理登机手续,或者有没有办法让MSBuild从nuget Feed自动下载所需的软件包?
Edw*_*lde 67
由于这个问题被问到,现在有一个简单的工作流程来使用NuGet而无需将包提交给源代码控制
从包管理器控制台,您需要安装'NuGetPowerTools':
Install-Package NuGetPowerTools
Run Code Online (Sandbox Code Playgroud)
然后,要使项目支持包还原,您需要运行另一个命令:
Enable-PackageRestore
Run Code Online (Sandbox Code Playgroud)
现在,您已准备好在没有packages文件夹的情况下提交代码库.上一个命令更改了项目文件,因此如果缺少包,则会自动下载并添加.
Haa*_*ked 31
是.考虑"packages"目录等同于您在问题中提到的"libs"目录.这是我个人对我的OSS项目采取的方法.
我们正在调查允许MSBuild自动下载所需软件包的功能,但尚未实现(从NuGet 1.1开始).
我认为有些人可能已经自己实现了这些功能,但我们的计划是看看NuGet 1.2或1.3内置的功能.
尽管这里有所有的答案,但它仍然是一个简单的'糟糕的解决方案,没有所有的依赖属于"某种"版本控制.
对于GIT,这意味着GIT-LFS.
NPM最近的一集说明了原因:如果您所依赖的互联网存储库中断,不可用等等,那么您是不是已经搞砸了?
你不再能够建立你的东西 - 因此无法提供.
自从提出问题以来,我已经采用了以下方法,以便我不必检查toplovel Packages目录.
在toplevel build.msbuild文件中:
<Target Name="NuGet">
<ItemGroup>
<NuGetPackage Include="*\packages.config" />
</ItemGroup>
<Exec Command='libs\NuGet.exe install "%(NuGetPackage.FullPath)" -o Packages' />
<!-- optional for project that has JavaScript content -->
<CreateItem Include="Packages\*\Content\Scripts\*">
<Output TaskParameter="Include" ItemName="NuGetJSFiles"/>
</CreateItem>
<Copy SourceFiles="@(NuGetJSFiles)" DestinationFolder="MainProj\Scripts\" OverwriteReadOnlyFiles="true" SkipUnchngedFiles="true" />
<Delete Files="MainProj\Scripts\.gitignore" />
<WriteLinesToFile File="MainProj\Scripts\.gitignore" Lines="%(NuGetJSFiles.Filename)%(NuGetJSFiles.Extension)" /
<Delete Files="@(PostNuGetFiles)" />
</Target>
Run Code Online (Sandbox Code Playgroud)
在每个project.csproj文件中
<Target Name="BeforeBuild">
<Error Condition="!Exists('..\Packages\')" Text="You must run > msbuild build.msbuild to download required NuGet
Packages" />
<!-- optional for project that has JavaScript content -->
<ReadLinesFromFile File="Scripts\.gitignore">
<Output TaskParameter="Lines" ItemName="ReqJSFiles" />
</ReadLinesFromFile>
<Message Text="@(ReqJSFiles)" />
<Error Condition="!Exists('Scripts\%(ReqJSFiles.Identity)')" Text="You must run > msbuild build.msbuild to download required NuGet JS Package - Scripts\%(ReqJSFiles.Identity)" />
</Target>
Run Code Online (Sandbox Code Playgroud)