我的第一个Autodesk Vault定制程序
我们的Vault开发专家Barbara离开了,我不得不开始学习Vault API了。如果你也刚开始学习Vault,这篇文章也许对有你帮助。Vault客户端主要采用Web Service与Vault服务器通讯,Vault也提供了丰富的API,其中重要的就是各个WebService。Vault提供了.net的API,可以用C#或者VB.net来做定制开发,开发工具自然是Visual Studio了。 Vault 2013开始,Vault API支持.net framework 4.0, 所有这里使用VS2010. 做个最简单的WinForm程序,枚举Vault服务器中的所有文件。
Vault 的SDK会随Vault Server或者Vault Client安装,在Vault的安装目录\SDK 目录下可以找到Vault SDK的安装文件,安装完毕后可以得到下列目录:
首先创建一个WinForm的应用程序,注意对于Vault 2013来说,需要使用.net Framework 4.0 .在上面添加一个listbox和一个button,然后添加引用。这里作为一个独立的应用程序,只需要引用Autodesk.Connectivity.WebServices.dll即可,然后编写代码如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Autodesk.Connectivity.WebServicesTools;
using Autodesk.Connectivity.WebServices;
namespace HelloVault
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
//用指定的用户名密码,连接到指定服务器的vault
UserPasswordCredentials cred = new UserPasswordCredentials
("Bei9m4jxix", "Vault", "Administrator", "");
//获取WebService Manager
using (WebServiceManager mgr = new WebServiceManager(cred))
{
//有WebServiceManager获取文档服务,还可以获取其他服务
//然后获取Vault根目录
Folder root = mgr.DocumentService.GetFolderRoot();
//递归打印Vault服务器中的目录和文件
PrintFolder(root, mgr);
}
}
public void PrintFolder(Folder folder, WebServiceManager mgr)
{
File[] files = mgr.DocumentService
.GetLatestFilesByFolderId(folder.Id, true);
if (files != null)
{
foreach (var file in files)
{
//批量更改文件名
file.Name += "_modi";
listBox1.Items.Add(folder.FullName + "\\" + file.Name);
}
}
Folder[] subFolders = mgr.DocumentService
.GetFoldersByParentId(folder.Id, false);
if (subFolders != null)
{
foreach (var subFolder in subFolders)
{
PrintFolder(subFolder, mgr);
}
}
}
}
}
代码并不复杂,在编译时会提示'Microsoft.Web.Services3.WebServicesClientProtocol程序集找不到,
Error 1 The type 'Microsoft.Web.Services3.WebServicesClientProtocol' is defined in an assembly that is not referenced. You must add a reference to assembly 'Microsoft.Web.Services3, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.
解决办法即按照提示添加'Microsoft.Web.Services3的引用即可。如果你安装了Vault Client,这个dll在C:\Program Files (x86)\Microsoft WSE\v3.0目录下。如果你没有安装Vault client,你需要自行从微软网站下载WSE3(Web Service Extension)
另外还有错误信息:
Error 1 The type 'System.Web.Services.Protocols.SoapHttpClientProtocol' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Web.Services, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.
需要添加System.Web.Services的引用。
然后编译运行,结果如下:
![](https://img2024.cnblogs.com/blog/35695/202408/35695-20240825082459112-376424429.jpg)