当我尝试将xsd转换为.cs时,系统找不到指定的文件

时间:2015-09-10 21:09:03

标签: c# .net xsd

当我尝试使用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();
        }
    }
}
}

1 个答案:

答案 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