当我尝试使用C#代码
将xsd转换为cs时,我遇到了以下错误错误详情
Microsoft(R)Xml架构/数据类型支持实用程序 [Microsoft(R).NET Framework,版本4.0.30319.17929]版权所有(C) 微软公司。版权所有。编写文件' C:\ Program 文件(x86)\ Microsoft Visual Studio 11.0 \ abc.cs'。错误:错误 为架构生成类' C:\ test \ safe'。访问路径 ' C:\ Program Files(x86)\ Microsoft Visual Studio 11.0 \ abc.cs'是 拒绝。
代码
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Security;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Process p = new Process();
string xsdFile = "c:\\test\\abc.xsd";
try
{
if (!File.Exists(xsdFile))
{
Console.WriteLine("Error. File doesn't exists.");
Environment.Exit(1);
}
String pass = "********";
p.StartInfo.UserName = "asdasd";
p.StartInfo.Domain = "asdasd";
SecureString passWord = new SecureString();
foreach (char c in pass.ToCharArray())
{
passWord.AppendChar(c);
}
p.StartInfo.Password = passWord;
p.StartInfo.FileName = "C:\\Program Files (x86)\\Microsoft SDKs\\Windows\\v7.0A\\Bin\\XSD.exe";
p.StartInfo.UseShellExecute = false;
p.StartInfo.WorkingDirectory = @"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin";
p.StartInfo.Arguments = "/c " + xsdFile;
p.Start();
Console.WriteLine(p.StartInfo.WorkingDirectory);
Console.ReadLine();
}
catch (Exception e)
{
Console.WriteLine(e.Message);
Console.WriteLine(p.StartInfo.WorkingDirectory);
Console.ReadLine();
}
}
}
}
答案 0 :(得分:0)
正如它所说的......访问被拒绝。 从这开始:手动清理并构建您的应用程序"发布"模式。导航到您的"发布"文件夹并以管理员身份运行您的EXE。如果这样可行,您只需确保运行该应用程序的用户(可能是您自己)具有对" C:\ Program Files(x86)\ Microsoft Visual Studio 11.0 \"的完全读/写访问权限。您也可以使用此链接:How to start a Process as administrator mode in C#来帮助您以管理员身份自动运行新流程。
这也可能只是您所期望的错误:
从上面的内容我假设这不是您期望的输出目录,您应该考虑使用" / outputdir:目录"切换XSD.exe