小编dat*_*ore的帖子

C#中File.Replace和(File.Delete + File.Move)之间的区别

今天我遇到了一个奇怪的问题:由于应用程序的一年和多个版本/测试,以下代码已成功用于替换另一个文件.

File.Replace(path + ".tmp", path, null);
Run Code Online (Sandbox Code Playgroud)

这在本地工作,也与UNC路径(网络共享)一起工作.但是今天我使用此代码替换UNC路径上的文件时出现以下错误(本地仍可正常工作):

该进程无法访问该文件,因为该文件正由另一个进程使用

当我使用以下代码而不是上述代码时,它可以工作:

File.Delete(path);
File.Move(path + ".tmp", path);
Run Code Online (Sandbox Code Playgroud)

所以我的问题:

  • 这两个代码片段有什么区别?
  • 可能是微软改变了'File.Replace'的工作方式吗?

我在Visual Studio 2010中使用.Net Framework 4.0.

提前致谢.

.net c#

22
推荐指数
2
解决办法
2万
查看次数

控制台应用程序中的多个args无法正确解析

容易重现,但对我来说真的很奇怪:

将以下带有3个字符串的'args'添加到VisualStudio中的命令行参数文本框中(在项目属性 - >调试 - >启动选项下):

-SourceFile:"c:\temp\file.txt" -DestinationFolder:"c:\temp\" -ArchiveFolder:"C:\temp\"
Run Code Online (Sandbox Code Playgroud)

使用这个简单的控制台应用程序进

class Program
{
    static void Main(string[] args)
    {
        foreach (string t in args)
        {
            Console.WriteLine(t);
        }
        Console.ReadKey();
    }
}
Run Code Online (Sandbox Code Playgroud)

结果:数组(args [])有2个而不是3个字符串?

[0] SourceFile:c:\temp\file.txt
[1] DestinationFolder:c:\temp" -ArchiveFolder:C:\temp"
Run Code Online (Sandbox Code Playgroud)

有人能解释我为什么会这样吗?引号引起一些奇怪的原因,引号将被.net删除,但在这里,仍有一些引用......但我看不出问题......

谢谢你的帮助!

.net c# console console-application command-line-arguments

8
推荐指数
1
解决办法
2128
查看次数

RESTSharp在反序列化XML时遇到问题,包括字节顺序标记?

我想在一个简短的C#应用​​程序中使用一个公共Web服务:http: //ws.parlament.ch/

从此Web服务返回的XML在开头有一个"BOM",这会导致RESTSharp无法通过以下错误消息对XML进行反序列化:

检索响应时出错.查看内部细节以获取更多信息.---> System.Xml.XmlException:根级别的数据无效.第1行, 位于System.Xml.XmlTextReaderImpl.Throw(Exception e)
的System.Xml.XmlTextReaderImpl.Throw(String res,String arg),位于System.Xml.XmlTextReaderImpl的System.Xml.XmlTextReaderImpl.ParseRootLevelWhitespace()处. System.Xml.Linq.XDocument.Parse上的System.Xml.Linq.XDocument.Load(XmlReader reader,LoadOptions选项)中的System.Xml.XmlTextReaderImpl.Read()处的ParseDocumentContent()(String text,LoadOptions options)
在RestSharp.RestClient.Deserialize [T](IRestRequest请求,IRestResponse raw)的RestSharp.Deserializers.XmlDeserializer.Deserialize [T](IRestResponse响应)的System.Xml.Linq.XDocument.Parse(String text)
---结束内部异常堆栈跟踪---

以下是使用http://ws.parlament.ch/sessions?format=xml获取" 会话 " 列表的简单示例:

public class Session
{
    public int Id { get; set; }
    public DateTime? Updated { get; set; }
    public int? Code { get; set; }
    public DateTime? From { get; set; }
    public string Name { get; set; }
    public DateTime? To { get; set; }
}


static void Main(string[] args) …
Run Code Online (Sandbox Code Playgroud)

c# byte-order-mark restsharp

7
推荐指数
1
解决办法
3578
查看次数