C# XML文档工作的路径

C# XML文档工作的路径,c#,xml,C#,Xml,每次我试图将某些内容保存到创建的XML文档中时,我使用的路径总是错误的。 代码如下: public string ToXml<T>(T obj, string path) { var saveToXmlPath = Path.Combine(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location), path); using (var stringWriter = new Stre

每次我试图将某些内容保存到创建的XML文档中时,我使用的路径总是错误的。 代码如下:

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");

    }
公共字符串ToXml(T对象,字符串路径)
{
var saveToXmlPath=Path.Combine(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location),Path);
使用(var stringWriter=newstreamwriter((saveToXmlPath)))
{
var xmlSerializer=新的xmlSerializer(typeof(ObservableCollection));
Serialize(stringWriter,obj);
返回stringWriter.ToString();
}
}
公共构造函数()
{
var temp=新的可观测采集{
新模型{ID=1,Name=“Name1”},
新模型{ID=2,Name=“Name2”},
新模型{ID=3,Name=“Name3”};
ToXml(temp,@“Common\Assets\XML\XmlFile.XML”);
}

它不断地说路径错误,不断地向路径添加/debug/big。

在这一行设置断点:

var saveToXmlPath = Path.Combine(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location), path);
上面说什么

Assembly.GetEntryAssembly().Location正在向您的路径添加/调试。

首先,您的“问题”与XML无关。您想知道为什么
Assembly.GetEntryAssembly().Location
会给您“../bin/Debug”


其次。。。从你实际提供的很少的信息来看,事实上根本没有问题;只是你的误会
Assembly.GetEntryAssembly().Location
将为您提供正在执行的“.exe”文件(您的应用程序)的位置。在这种情况下,默认情况下,它确实位于“bin/Debug”文件夹中。如果您希望将XML文件写入其他地方,那么您可以指定您认为其他地方应该在哪里,这将非常有用。

Assembly.GetEntryAssembly().Location的值是多少?根据您在另一个答案中的注释,程序集返回的路径是
C:\\Users\\UserName\\Documents\\Visual Studio 2015\\Projects\\SolutionName\\ProjectName\\bin\\Debug\\
,这是正确的。当VisualStudio编译应用程序时,它将把它放在
bin
目录中,然后放在配置的子目录中,在本例中是
debug
。这是实际编译的.exe运行的位置。您希望它在哪里尝试写入文件?我希望它将文件写入我创建xml文档的位置。我对xml知之甚少,所以请告诉我它应该如何工作,如果我告诉程序xml文档的确切位置,它不应该在那里写入吗?这限制了页面部署位置的目录结构。不是最好的…它说:“C:\\Users\\UserName\\Documents\\Visual Studio 2015\\Projects\\SolutionName\\ProjectName\\bin\\Debug\\Common/Assets/XML/XmlFile.XML”当我使用AppDomain.CurrentDomain.BaseDirectory+@“路径/XmlFile.XML”时,用big\\Debug获得同样的效果