如何在Cake构建工具中使用NuGet包

5

build.cake:

var target = Argument("target", "Default");

Task("Default")
  .Does(() => {
     var client = new RestSharp.RestClient("www.test.com");
    Information("Hello World!");
});

RunTarget(target);

packages.config:

<?xml version="1.0" encoding="utf-8"?>
<packages>
    <package id="Cake" version="0.21.1" />
    <package id="RestSharp" version="105.2.3" />
</packages>

收到的错误信息:

错误 CS0246:找不到类型或命名空间名称“RestSharp”(是否缺少 using 指令或程序集引用?)

1个回答

8
使用#addin预处理器指令从nuget加载程序集,它会获取包并引用其中的程序集。
#addin nuget:?package=Cake.Foo
#addin nuget:?package=Cake.Foo&version=1.2.3
#addin nuget:?package=Cake.Foo&prerelease
#addin nuget:https://myget.org/f/Cake/?package=Cake.Foo&prerelease

您可以在 cakebuild.net 上了解更多有关预处理器指令的信息。

您的示例脚本应该类似于以下内容:

#addin nuget:?package=RestSharp&version=105.2.3

var target = Argument("target", "Default");

Task("Default")
  .Does(() => {
     var client = new RestSharp.RestClient("http://www.test.com");
    Information("Hello World!");
});

RunTarget(target);

谢谢!这意味着我不需要packages.config条目吗? 还有一种方法可以使用packages.config条目吗? - Chazt3n
1
是的,您可以在Addins文件夹中使用packages.config文件,并在该新文件中放置RestSharp的条目。位于tools文件夹根目录下的packages.config文件仅用于工具。注意:为了使此方法起作用,您需要最新的引导程序。 - Gary Ewan Park
2
你仍然需要使用#addin或#r指令,以便装配件能够被加载并在脚本中可用。 - devlead
@devlead 如果不管怎样都必须在文件中设置,那么将其放在配置中是否有任何好处呢? - Chazt3n
1
@Chazt3n 不,添加插件和工具的首选方式应该是预处理器指令。 - devlead

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接