我已经了解了如何通过向注册表添加密钥,在Windows资源管理器上向文件添加右键单击上下文菜单项.即我可以在资源管理器中右键单击文件并针对该文件运行自定义应用程序.
我想对一个文件夹做同样的事情,但还没有找到办法(尚).我看到有关创建/编写自定义上下文菜单处理程序的文章,但我宁愿不去那里.
我在这里找到了一篇关于如何将级联上下文菜单项添加到桌面和资源管理器中的"计算机"的文章,但这对任何文件夹都不起作用.
我希望能够将我的自定义应用程序添加到上下文菜单中,并使其适用于文件和文件夹.有没有办法在不编写上下文菜单处理程序的情况下执行此操作?
我可以看到如何关闭SQL Server中的行级和页级锁定,但我找不到强制SQL Server使用行级锁定的方法.有没有办法强制SQL Server使用行级锁定而不使用页面级锁定?
我使用Visual Studio 2010版本10.0.40.219.1 SP1 Rel创建了一个安装程序.我的应用程序是为x86构建/编译的,需要VC++运行时库.因此,安装项目配置为VC++运行时库作为先决条件.
每次运行安装程序时,我都会弹出"您的计算机上将安装以下组件"."Visual C++ 2010运行时库(x86)".它是第一次按预期安装.第二次及以后,它会询问我是否修复或删除VC++ 2010.
此弹出窗口应该只显示一次,第一次发现未安装VC++可再发行组件.
有没有人见过这个?有谁知道如何解决这个问题?
解:
我接受的答案给了我解决问题所需要的东西.以下是我为解决这个问题所做的工作的细节,事实上这非常简单.我编辑了文件:
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages\vcredist_x86\product.xml
Run Code Online (Sandbox Code Playgroud)
在此文件中,您将找到以下内容:
<InstallChecks>
<MsiProductCheck Property="VCRedistInstalled" Product="{6EE91C1A-A2E7-38CD-AEBB-3B900A4D8868}"/>
</InstallChecks>
Run Code Online (Sandbox Code Playgroud)
以上包含不正确的产品代码.将以上内容替换为Visual C++ 2010 SP1可再发行组件的正确产品代码,如下所示:
<InstallChecks>
<MsiProductCheck Property="VCRedistInstalled" Product="{F0C3E5D1-1ADE-321E-8167-68EF0DE699A5}"/>
</InstallChecks>
Run Code Online (Sandbox Code Playgroud)
此处的链接显示各种VC++ 2010 Redistributables的正确产品代码.
在下面的代码中,如果在执行SQL语句时抛出任何异常,我们应该期望在事务未提交时对事务进行隐式回滚,它会超出范围并被处置掉:
using (DbTransaction tran = conn.BeginTransaction())
{
//
// Execute SQL statements here...
//
tran.Commit();
}
Run Code Online (Sandbox Code Playgroud)
以上是一种可接受的做法,还是应该捕获异常并显式调用tran.Rollback(),如下所示:
using (DbTransaction tran = conn.BeginTransaction())
{
try
{
//
// Execute SQL statements here...
//
tran.Commit();
}
catch
{
tran.Rollback();
throw;
}
}
Run Code Online (Sandbox Code Playgroud) 假设我有以下字符串:
string str1 = "Hello World!";
string str2 = str1.SubString(6, 5); // "World"
Run Code Online (Sandbox Code Playgroud)
我希望在上面的例子str2中不复制"World",但只是最终成为一个新的字符串,指向相同的内存空间,只是它以6的偏移量和5的长度开始.
实际上我正在处理一些可能非常长的字符串,并且由于性能原因我对它在幕后的工作方式感兴趣.我不熟悉IL调查此事.
我用C#开发了一个Windows服务.我用Visual Studio 2008创建了一个安装程序,它安装了Windows服务.到目前为止一切都很好.我想确保在安装时创建了事件源,以便运行时的任何错误/异常条件都正确记录到Windows事件日志中.
事件源是否作为Windows服务安装(和卸载)的一部分自动创建(和删除),或者我是否必须自己处理并创建自定义操作以创建和删除它,如下所示?
protected override void OnBeforeInstall(IDictionary savedState)
{
base.OnBeforeInstall(savedState);
if (!EventLog.SourceExists(ServiceName))
EventLog.CreateEventSource(ServiceName, "Application");
}
protected override void OnAfterUninstall(IDictionary savedState)
{
base.OnAfterInstall(savedState);
if (EventLog.SourceExists(ServiceName))
EventLog.DeleteEventSource(ServiceName);
}
Run Code Online (Sandbox Code Playgroud) 我正在使用System.Data.Sqlite访问C#中的SQLite数据库.我有一个查询必须读取表中的行.在遍历行并且在阅读器打开时,必须执行某些SQL更新.我遇到了"数据库被锁定"异常.
在SQLite的文档状态:
当进程想要从数据库文件中读取时,它遵循以下步骤:
- 打开数据库文件并获取SHARED锁.
文档进一步说明了"共享"锁定:
可以读取数据库但不写入数据库.任意数量的进程可以同时保存SHARED锁,因此可以有许多同时读取器.但是,当一个或多个SHARED锁处于活动状态时,不允许其他线程或进程写入数据库文件.
在常见问题状态:
多个进程可以同时打开同一个数据库.多个进程可以同时执行SELECT.但是,只有一个进程可以随时对数据库进行更改.
SQLite权威指南一书指出:
... 通过使用read_uncommited编译指示,连接可以选择具有读取未提交的隔离级别.如果设置为true,则连接不会对其读取的表放置读锁定.因此,另一个writer实际上可以更改表,因为read-uncommitted模式下的连接既不会阻塞也不会被任何其他连接阻塞.
我尝试将pragma设置为在SQL查询命令语句中读取未提交,如下所示:
PRAGMA read_uncommitted = 1;
SELECT Column1, Column2 FROM MyTable
Run Code Online (Sandbox Code Playgroud)
使用不同连接在同一线程上的SQL更新仍然失败,并出现"数据库已锁定"异常.然后,我尝试将隔离级别设置为在连接实例上读取未提交.同样的例外仍然没有变化.
如何在不锁定数据库的情况下使用开放数据读取器来遍历数据库中的行,以便我可以执行更新?
更新:
以下两个答案都有效.然而,我已经从使用默认回滚日志转移到现在使用预写日志,这提供了改进的数据库读写并发性.
我有一个SQLite数据库,我将日期存储为刻度.我没有使用默认的ISO8601格式.假设我有一个表定义如下:
CREATE TABLE TestDate (LastModifiedTime DATETIME)
Run Code Online (Sandbox Code Playgroud)
使用SQL,我希望插入当前的日期和时间.如果我执行以下任何语句,我最终会将日期和时间存储为字符串而不是刻度.
INSERT INTO TestDate (LastModifiedTime) VALUES(CURRENT_TIMESTAMP)
INSERT INTO TestDate (LastModifiedTime) VALUES(DateTime('now'))
Run Code Online (Sandbox Code Playgroud)
我查看了SQLite文档,但我似乎没有找到任何选项来获取刻度中的当前时间戳.
我当然可以在C#中定义一个参数,并将该值存储为System.DateTime.这确实导致日期时间以刻度形式存储到数据库中.
我想要做的是能够直接从SQL语句中插入和更新当前时间戳.我该怎么做?
编辑:
我希望数据存储为数据库中的滴答的原因是日期的存储格式与ADO.Net数据提供程序存储的格式相同,因此当使用ADO.Net提供程序查询数据时,它也是正确检索为System.DataTime .Net类型.
我正在开发一个WinForms应用程序,并希望将帮助集成到其中.在过去,我集成了.chm帮助文件.
关于.chm文件,这篇Wiki文章指出:
2002年,微软公布了与.CHM格式相关的安全风险,以及安全公告和补丁.他们后来宣布他们不打算进一步开发.CHM格式.
根据我的阅读,Microsoft Help 2.x是使用.hxs文件扩展名帮助文件在VS 2008和Office 2007中使用的帮助引擎.
Office 2010中使用了什么?建议的帮助文件格式是什么?
更新:
我在以下MSDN文章中找到了有关此主题的有用信息:
我已经整理了网格的工作示例,并希望将IconMenu添加到网格的每一行的列中.我看到了图标按钮,但是当我点击它时,我没有看到菜单.下面是网格的代码.
有没有人设法使用来自material-ui的IconMenu 固定数据表?
require('fixed-data-table/dist/fixed-data-table.css');
var React = require('react');
var PropTypes = React.PropTypes;
var FixedDataTable = require('fixed-data-table');
var Table = FixedDataTable.Table;
var Column = FixedDataTable.Column;
// Material-UI
let MenuItem = require('material-ui/lib/menus/menu-item');
let IconMenu = require('material-ui/lib/menus/icon-menu');
let IconButton = require('material-ui/lib/icon-button');
let Colors = require('material-ui/lib/styles/colors');
let MoreVertIcon = require('material-ui/lib/svg-icons/navigation/more-vert');
function cellMenuRenderer(cellData, key, rowData, rowIndex, columnData, width) {
let button = (
<IconButton
touch={true}
tooltip='Click to see menu.'
tooltipPosition='bottom-left'>
<MoreVertIcon color={Colors.grey400} />
</IconButton>
);
return (
<IconMenu iconButtonElement={button}>
<MenuItem primaryText="Edit" …Run Code Online (Sandbox Code Playgroud) c# ×3
.net ×2
sqlite ×2
bootstrapper ×1
chm ×1
contextmenu ×1
datetime ×1
event-log ×1
explorer ×1
help-files ×1
helpfile ×1
iconmenu ×1
iso8601 ×1
locking ×1
material-ui ×1
reactjs ×1
rollback ×1
rowlocking ×1
sql ×1
sql-server ×1
string ×1
substring ×1
transactions ×1
visual-c++ ×1
winforms ×1