1

我正在尝试使用 Swagger 为 WebAPI 生成客户端代码。我通常通过下载元数据 json 文件(在部署 WebAPI 之后)然后为客户端类库使用选项“Add->Rest API Client..”来做到这一点。

添加 -> 休息 API 客户端

这将为所需的项目生成客户端库并且工作正常。但我正在尝试使用 Autorest.exe 自动化这个过程。我编写了小代码来执行带有参数的Autorest.exe以生成客户端代码,如下所示

string filename = @"C:\Users\xxxx\packages\AutoRest.0.9.7\tools\AutoRest.exe";
System.Diagnostics.Process process = new System.Diagnostics.Process();
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
startInfo.FileName = filename;
startInfo.Arguments = "-CodeGenerator CSharp -Modeler CompositeSwagger -Input http://WebAPIDomainNameGoesHere:80/swagger/docs/v1 -Namespace CESOutboundAPI.ClientLibrary";
process.StartInfo = startInfo;
process.Start();
process.WaitForExit();

但是新生成的客户端代码不起作用(不构建)并且与我在 Visual Studio 中使用 GUI 选项时得到的输出不同。

当我尝试构建新生成的代码时,我收到每个.cs文件的以下错误消息。

The type or namespace name 'ValidationRules' does not exist in the namespace 'Microsoft.Rest' (are you missing an assembly reference?)  
The type or namespace name 'SerializationException' does not exist in the namespace 'Microsoft.Rest' (are you missing an assembly reference?)   
The type or namespace name 'Serialization' does not exist in the namespace 'Microsoft.Rest' (are you missing an assembly reference?)    
The type or namespace name 'HttpResponseMessageWrapper' does not exist in the namespace 'Microsoft.Rest' (are you missing an assembly reference?)   
.
.

我需要帮助自动生成完美执行并与 GUI 生成的内容相匹配的客户端代码。提前致谢。

4

2 回答 2

2

事实上,VS 中的 AutoRest 版本已经很老了,你真的不想使用它。

获取最新版本的 AutoRest(安装到c:\autorest... 更改为您想要的任何位置。)

确保您拥有 NuGet 3.4 或更高版本。

最新的夜间版本

NuGet.exe install AutoRest -source https://www.myget.org/F/autorest/api/v3/index.json -prerelease -outputdirectory c:\autorest 

最新稳定版本

NuGet.exe install AutoRest -outputdirectory c:\autorest 
于 2017-01-05T18:08:55.940 回答
0

我终于弄清楚了这个问题。我正在使用不同版本的 Autorest.exe 来生成我的客户端,而 Visual Studio“添加 - > Rest API 客户端”正在使用另一个版本。在我下载所需的版本并使用上面相同的命令后,它就像魅力一样。

于 2016-12-22T16:01:10.720 回答