2015-11-13 56 views
0

每次我尝试将某些内容保存到创建的XML文档中时,我所使用的路径始终存在错误。 下面是代码:XML dosent工作的路径

public string ToXml<T>(T obj, string path) 
    { 

     var saveToXmlPath = Path.Combine(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location), path); 
     using (var stringWriter = new StreamWriter((saveToXmlPath))) 
     { 
      var xmlSerializer = new XmlSerializer(typeof(ObservableCollection<object>)); 
      xmlSerializer.Serialize(stringWriter, obj); 
      return stringWriter.ToString(); 
     } 

    } 

    public Constructor() 
    { 
     var temp = new ObservableCollection<Model> { 
      new Model { ID = 1, Name = "Name1" }, 
      new Model { ID = 2, Name = "Name2" }, 
      new Model { ID = 3, Name = "Name3" } }; 
     ToXml(temp, @"Common\Assets\XML\XmlFile.xml"); 

    } 

它不停地说,该道路是错误的,不断添加/调试/大的路径。

+3

Assembly.GetEntryAssembly()。的值是什么? –

+1

根据您在另一个答案中的评论,程序集返回的路径是'C:\\ Users \\ UserName \\ Documents \\ Visual Studio 2015 \\ Projects \\ SolutionName \\ ProjectName \\ bin \\ Debug \\ '这是正确的。当Visual Studio编译你的应用程序时,它会把它放到'bin'目录中,然后放到配置的子目录中,在这里是'debug'。这是实际编译的.exe所运行的位置。您希望在哪里尝试写入文件? –

+0

我期望它将文件写入到我创建xml文档的位置。 – Micsto

回答

0

设置在这条线断点:

var saveToXmlPath = Path.Combine(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location), path); 

是什么说的?

Assembly.GetEntryAssembly()。位置正在添加/调试到您的路径。

+1

这限制了页面部署的目录结构。不是最好的... –

+0

它说:“C:\\ Users \\ UserName \\ Documents \\ Visual Studio 2015 \\ Projects \\ SolutionName \\ ProjectName \\ bin \\ Debug \\ Common/Assets/XML/XmlFile.xml“ – Micsto

+0

当我使用 AppDomain.CurrentDomain.BaseDirectory + @”ThePath/XmlFile.xml“获取大\\调试时的相同内容 – Micsto

0

首先,您的“问题”与XML无关。你想知道为什么Assembly.GetEntryAssembly().Location给你“... /斌/调试”。其次......从你实际提供的信息来看,其实根本没有问题;只是你的误解。 Assembly.GetEntryAssembly().Location会给你执行“.exe”文件(你的应用程序)的位置。在这种情况下,默认情况下,它确实在“bin/Debug”文件夹内。如果你想把XML文件写在其他地方,那么如果你指定你认为别的地方应该在哪里,这将是有帮助的。