如果我创建一个新的应用程序,并与特定计算机上的.xml文件扩展名相关联,当有人双击.xml文件时,它将启动我的应用程序并将该文件作为参数传递.但Windows似乎知道其他文件能够使用该文件类型.这是怎么设置的?
此外,当我将Microsoft Word文件另存为.xml文件时,稍后双击该文件,它将启动Microsoft Word,即使.xml文件类型与其他内容相关联,例如Internet Explorer.似乎可能存在与.xml文件类型相关联的存根,在调用时会查看内容并启动相应的应用程序.
有没有Windows API,或某种标准方式来做到这一点?
我想创建一个应用程序来完成Word正在做的事情 - 即以.xml格式保存文件,但双击时,启动我的应用程序而不是Internet Explorer.
假设我有一个C#类:
class Foo
{
private List<Bar> _barList;
List<Bar> GetBarList() { return _barList; }
...
}
Run Code Online (Sandbox Code Playgroud)
客户可以调用它:
var barList = foo.GetBarList();
barList.Add( ... );
Run Code Online (Sandbox Code Playgroud)
有没有办法让Add
方法失败,因为只_barList
返回只读版本?
似乎这是一个介绍一些人进行单元测试的好方法.
这个问题清楚地展示了如何使用 MOQ 模拟索引属性:How to Moq Setting an Indexed property
但是,如果您有两个索引怎么办?
例如,假设您有一个 _Worksheet 对象(来自 vsto)
var mockWorksheet = new Mock<_Worksheet>();
Run Code Online (Sandbox Code Playgroud)
您想创建一个名为 Cells 的属性,以便您可以像这样使用它:
var range = worksheet.Cells[1,1];
Run Code Online (Sandbox Code Playgroud)
注意:范围可以是另一个模拟,可以用以下方法模拟: var mockRange = new Mock();
有什么建议?
我有一个Dictionary对象,我想写入磁盘,并能够从磁盘读取它.理想情况下,我会避免任何第三方库.使用常规C#4有一种简单的方法吗?
答案接受了.
摘要:
选项1 - 使用JavaScriptSerializer
优点:不需要第三方图书馆.此外,使用更现代的格式,即JSON
缺点:难以阅读 - 没有形成.此外,确实需要引用不太常用的System.Web.Extension程序集,即使应用程序与Web无关.
解:
写:
File.WriteAllText("SomeFile.Txt", new JavaScriptSerializer().Serialize(dictionary));
Run Code Online (Sandbox Code Playgroud)
读:
var dictionary = new JavaScriptSerializer()
.Deserialize<Dictionary<string, string>>(File.ReadAllText("SomeFile.txt"));
Run Code Online (Sandbox Code Playgroud)
选项2 - 使用Linq到Xml
优点:不需要第三方图书馆.通常不需要添加其他引用.易于阅读.
缺点: XML不像更现代的JSON那样优先.
写:
new XElement("root", d.Select(kv => new XElement(kv.Key, kv.Value)))
.Save(filename, SaveOptions.OmitDuplicateNamespaces);
Run Code Online (Sandbox Code Playgroud)
读:
var dictionary = XElement.Parse(File.ReadAllText(filename))
.Elements()
.ToDictionary(k => k.Name.ToString(), v => v.Value.ToString());
Run Code Online (Sandbox Code Playgroud)
选项3 - 使用JSON.NET
优点:人类可读.现代格式.
缺点:必要的第三方图书馆.
解:
写:
File.WriteAllText("SomeFile.Txt", JsonConvert.SerializeObject(dictionary));
Run Code Online (Sandbox Code Playgroud)
读:
var dictionary = JsonConvert.DeserializeObject<Dictionary<string, string>>
(File.ReadAllText("SomeFile.txt"));
Run Code Online (Sandbox Code Playgroud) 使用Visual Studio 2015我创建了一个控制台应用程序,用于自托管Owin和嵌入式静态文件.由于Visual Studio不知道它是一个网站项目,它忽略了TypeScript文件.当我转到项目属性时,通常缺少Web项目中的TypeScript选项卡.
如何启用TypeScript选项卡以便我可以配置TypeScript并使用Visual Studio 2015的内置功能来编译TypeScript.
我想从我的自动化测试框架启动 chrome,以便我可以测试我的服务器端 ASP.NET 代码。确定 chrome.exe 在我的计算机上的位置的最佳方法是什么?
我正在使用ApprovalTests.Net.我看到我可以指定各种报告.我想在运行单元测试时自动批准测试.我只需要暂时执行此操作,或者在代码经历重大更改时执行此操作.在使用ApprovalResults.ForScenario创建数据驱动的ApprovalTests时,这尤其有用.
有没有办法做到这一点?
在尝试创建新的 Visual Studio 项目以尝试各种技术或周末项目时,我想要一种简单的方法来压缩我的源代码,而不必担心 .pdb、obj/bin 文件等。
多年前,我想出了一组 .bat 文件,其中一个是: zipall.bat看起来像这样:
del all.zip
pkzip -add -excl=Backup\* -path -rec all
Run Code Online (Sandbox Code Playgroud)
在运行它之前,我会运行另一个批处理文件: clean.bat,看起来像这样:
del/f/s/q *.aps 2>nul
del/f/s/q *.bsc 2>nul
del/f/s/q *.exp 2>nul
del/f/s/q *.idb 2>nul
del/f/s/q *.ilk 2>nul
del/f/s/q *.lib 2>nul
del/f/s/q *.ncb 2>nul
del/f/s/q *.obj 2>nul
del/f/s/q *.opt 2>nul
del/f/s/q *.pch 2>nul
del/f/s/q *.pdb 2>nul
del/f/s/q *.plg 2>nul
del/f/s/q *.sbr 2>nul
del/f/s/q *.suo 2>nul
del/f/s/q *.sdf 2>nul
del/f/s/q /ah *.suo 2>nul
del/f/s/q BuildLog.htm 2>nul
for /f "delims=;" %%i in ('dir …
Run Code Online (Sandbox Code Playgroud) 使用Source Safe,在将文件添加到Source Control后,它们在本地设置为只读.那么如果我去Explorer并检查内容,我可以快速查看哪些文件没有进入源代码控制,因为它们仍然是可读写的.
使用SVN,该软件在签入后不会将本地文件标记为只读,这很好,但是当最初向SVN添加未知的Visual Studio项目时,Visual Studio显然只添加其解决方案中的那些文件.某些支持文件(如文档等)可能位于源文件夹中,但未作为Visual Studio中的项添加,因此Visual Studio不会添加这些文件.我将不得不手动添加它们,或者我可以将这些文件添加到Visual Studio的解决方案中,并让Visual Studio执行此操作.但无论哪种方式,我仍然需要一种方法来确定哪些文件没有添加.
我尝试了锁定功能,但这对文件的本地只读标志没有任何影响.
我需要能够启动 64 位版本的 PowerShell.exe 我通过检查 [system.intptr]::size 的值是否为 8 来验证我是否处于 64 位版本。
c# ×4
.net ×2
asp.net ×1
const ×1
dictionary ×1
doctest ×1
excel ×1
file ×1
git ×1
immutability ×1
mocking ×1
moq ×1
owin ×1
pkzip ×1
powershell ×1
python ×1
readonly ×1
self-hosting ×1
svn ×1
typescript ×1
unit-testing ×1
vsto ×1
windows ×1
xml ×1
zip ×1