我正在尝试使用选中的文件在资源管理器中打开一个文件夹.
以下代码生成一个未找到文件的异常:
System.Diagnostics.Process.Start(
"explorer.exe /select,"
+ listView1.SelectedItems[0].SubItems[1].Text + "\\"
+ listView1.SelectedItems[0].Text);
Run Code Online (Sandbox Code Playgroud)
如何在C#中执行此命令?
我正在我的WPF应用程序中创建自定义错误对话框,我想使用标准的Windows错误图标.我可以从WPF获取特定于操作系统的图标吗?如果没有,有没有人知道从哪里得到.pngs的透明度?或者知道在Windows中从哪里提取它们?
到目前为止,我的搜索结果都没有.
我正在交叉编译从Linux到目标Windows的项目(使用mingw).输出是一个DLL,并从C#中调用它,但调试非常困难.构建输出一个.o文件,它可以为gdb提供符号,但基本上我可以做的就是中断异常并找到异常发生时正在执行的函数的名称; 甚至没有完整的堆栈跟踪.我无法使用WinDbg进行调试,因为我没有.pdb文件.
这是一个基于Linux构建的开源项目; 我相信他们的构建过程依赖于几个已安装的Linux软件包.
我有什么选择吗?是否有可以将.o文件转换为.pdb的实用程序?或者某些程序在调试时可以给我比gdb更多的信息?
所以看起来.NET性能计数器类型有一个恼人的问题:它暴露long了计数器RawValue,而windows中的实际perf计数器值是无符号的,不能是负数.例如,如果你有一个NumberOfItems64计数器API将非常乐意接受一个负值,然后静默地将其转换为一个非常大的数字.事实上,对于计数器的值范围的一半,设置它的唯一方法是找到正确的负值传递!
我假设这里发生的是他们从原始位获取long并将其视为无符号的64位数.来自二进制补码的负值只是作为计数器的直接数字读取.
所以我试图弄清楚如何强迫C#ulong直接从直线中删除long,因为这就是API想要的.但是C#在这里太有用了......你不能强制转换或使用,Convert.ToInt64(ulong)因为它会因为值太大而抛出溢出异常.我偶然发现了这种转换方式:
Convert.ToInt64(myULong.ToString("X"), 16)
当它从非基数10中的字符串转换时,它假定数字是二进制补码并且做我需要的数字.但它并不理想,因为它需要为每次转换分配一个对象并解析一个字符串,这个API将对性能至关重要.在C#中有更好的方法吗?
我正在使用SettingsManager我的Visual Studio扩展来存储用户设置.
SettingsManager settingsManager = new ShellSettingsManager(ServiceProvider.GlobalProvider);
var store = settingsManager.GetWritableSettingsStore(SettingsScope.UserSettings);
Run Code Online (Sandbox Code Playgroud)
我有一个自定义的WPF选项页面,如本文所述.我还想将我的扩展设置为使用导入/导出设置,因此我按照创建选项页面和创建设置类别页面,将其添加到我的包属性:
[ProvideProfile(typeof(OptionsDialogPage), "Unit Test Boilerplate Generator", "Unit Test Boilerplate Generator Settings", 106, 107, true, DescriptionResourceID = 108)]
[ProvideOptionPage(typeof(OptionsDialogPage), "Unit Test Boilerplate Generator", "Templates", 101, 109, supportsAutomation: true)]
Run Code Online (Sandbox Code Playgroud)
我成功地将其显示为导入/导出设置下的标题,但导出后我的数据都没有存储SettingsManager.我一直在寻找在下方的选项ProvideProfile,并ProvideOptionPage和尝试设置SupportsProfiles = true,但没有帮助.
如何挂钩这两个系统?
(编辑)我运行了Process Monitor,在这里找到了SettingsManager键(CollectionPath UnitTestBoilerplateGenerator):
\REGISTRY\A\{08894cfc-f3a9-f49b-133e-3453dfe7a27d}\Software\Microsoft\VisualStudio\15.0_a703f143Exp\UnitTestBoilerplateGenerator\Template_VisualStudio_Moq_File
Run Code Online (Sandbox Code Playgroud)
此处存储的内置选项(来自另一个扩展的示例):
\REGISTRY\A\{22e40365-b8e3-e9b2-1315-55021a1e4c3d}\Software\Microsoft\VisualStudio\15.0_a703f143\ApplicationPrivateSettings\Xavalon\XamlStyler\Core\Options\StylerOptions\NoNewLineElement
Run Code Online (Sandbox Code Playgroud)
所以它们似乎存储在不同的区域.有没有办法以编程方式编写这些内置选项或在导入/导出中包含自定义CollectionPath?
在我的viewmodel上我有一个int属性,我想用ComboBox公开它进行编辑,有一组有限的选择,比如16,8,4和2.有没有办法在XAML中指定选项,还是将值绑定回viewmodel?我想做这样的事情:
<ComboBox SelectedValue="{Binding MyIntProperty}">
<ComboBoxItem>16</ComboBoxItem>
<ComboBoxItem>8</ComboBoxItem>
<ComboBoxItem>4</ComboBoxItem>
<ComboBoxItem>2</ComboBoxItem>
</ComboBox>
Run Code Online (Sandbox Code Playgroud)
我知道我可以装配一个List<int>代码并将其设置为ItemsSource,但我希望有一种方法可以做到这一点,不涉及viewmodel中的额外属性,它暴露了在代码中创建的集合.
当ASP.NET收到请求时,它如何确定是为其提供服务还是对其进行排队?我问,因为我正在监视服务器上的性能计数器并且CPU没有达到最大值并且有大量可用的工作线程,但我仍然看到多达200个请求排队.
我正在编写一个MVVM应用程序并开始使用一些动画.我想在启动故事板的ViewModel上调用一些东西.这个博客有一个很有前途的方法,但实际上并没有用.IDChanged处理程序从不会因某些原因而触发.
我还发现你可以在EventTriggers上开始动画,但我不知道如何在ViewModel上引发动画.
我有一个WCF服务,并希望使用TCP绑定连接到它.这一切都很好,但你应该如何处理客户?我注意到,如果你为每个调用创建一个新的客户端,它不会重新使用该通道,并留下一堆TCP连接,直到它们超时.
创建客户端,在其上调用方法然后关闭它是否正常?
如果您想重新使用连接怎么办?有什么限制?你可以从不同的线程同时拨打电话吗?如果你不能,你是否必须自己建立连接池?当重新使用连接时,您是否必须在拨打电话之前检查连接状态并在出现故障时进行清理?