这应该是一个重复的问题,但我无法找到答案.我想在启动ClickOnce安装程序的Vista任务计划程序中添加一个任务.据我所知,该应用程序的.exe是隐藏的?所以我尝试输入桌面快捷方式作为要在"操作"选项卡中启动的项目.但这不起作用.我收到一条错误消息,指出快捷方式是无效的win32应用程序.
现在怎么办?
我使用实体框架将基于数据集的方法更改为我的sqlite数据库.我使用Visual Studio 2008的向导创建了实体,并将连接字符串存储在app.config中.然后,客户端程序通过WCF与数据库进行通信.当我在控制台应用程序中托管WCF服务时,这在开发计算机上运行良好.在远程计算机上的IIS7中托管服务后,我收到错误:"基础提供程序在打开时失败".它是在第一次从数据库尝试读取操作时生成的.
自动生成的连接字符串是:
<add name="xPMDbEntities" connectionString="metadata=res://*/PM_EDM.csdl|
res://*/PM_EDM.ssdl|
res://*/PM_EDM.msl;
provider=System.Data.SQLite;
provider connection string="
data source=G:\PMPersistence\xPMDb.s3db""
providerName="System.Data.EntityClient" />
Run Code Online (Sandbox Code Playgroud)
(我将字符串分成几行以使其更具可读性).
在服务器上,即使我将数据库放在与开发计算机上完全相同的位置,这也无法正常工作.是否需要编辑连接字符串的其余部分(我不了解第一件事)?关于如何构建EF连接字符串的良好资源的链接也将非常有用!
编辑:我还将以下部分添加到web.config文件中:
<system.data>
<DbProviderFactories>
<remove invariant="System.Data.SQLite"/>
<add name="SQLite Data Provider" invariant="System.Data.SQLite"
description=".Net Framework Data Provider for SQLite"
type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite"/>
</DbProviderFactories>
</system.data>
Run Code Online (Sandbox Code Playgroud)
这似乎工作(托马斯建议它应该位于machine.config文件中),因为之前我添加了这个条目我得到一个错误,说无法找到System.Data.SQLite.
EDIT2:我在服务器上安装了System.Data.SQLite dll,而不是只将xcopying到BIN目录.Framework/Config和Framework64/Config文件夹中的machine.config现在都具有上面的DbFactory条目.它不会产生差异(除非我必须重新启动服务器??)
我想在选择组合框时启用文本框.注意组合框项目没有定义,而是我在combox中使用了项目源来获取组合框项目的列表.我想在选择combox项目时更改文本框的属性.
(评论粘贴到原始问题)
<DataTrigger Binding="{Binding ElementName=cmbInstrumentType,
Path=SelectedIndex}"
Value="1" >
<Setter Property="IsEnabled" Value="true" />
<Setter Property="Background" Value="White" />
</DataTrigger>
Run Code Online (Sandbox Code Playgroud)
我希望它只在XAML中不在代码背后.我不想为每个指数值重复一遍 -
好吧,这必须是一个重复的问题,但我找不到答案:我有一个数据集到数据集的列表框.默认情况下,选择项目[0].我如何防止这种情况,以确保在我单击ListBoxItem时提出SelectionChanged事件?
编辑:我已经解除了SelectedIndex = -1路由,但我再次尝试:在Listbox的构造函数中将SelectedIndex设置为-1(或作为XAML中的属性)不起作用.似乎在初始化之后填充了列表框,并且selectedIndex将在all.Same故事之后变为0,用于将SelectedItem设置为null;
我试过这个:
<ListBox ItemsSource="{Binding Value}"
SelectionChanged="ListBox_SelectionChanged"
IsSynchronizedWithCurrentItem="True"
Loaded="ListBox_Loaded">
</ListBox>
Run Code Online (Sandbox Code Playgroud)
有:
private void ListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if(e.AddedItems.Count==0)return;//Prevents stackoverflow! ;-)
((ListBox)e.OriginalSource).SelectedItem=null;
}
private void ListBox_Loaded(object sender, RoutedEventArgs e)
{
((ListBox) sender).SelectedItem = null;
}
Run Code Online (Sandbox Code Playgroud)
这是有效的,但它在列表框显示的项目顶部插入一个空行,这非常难看....在我的特定情况下,我可以通过删除IsSynchronizedWithCurrentItem属性来解决问题.
但我可以想到许多情况,这是不可接受的.
上面的语句是无意义的:要么您想要使用主 - 细节绑定并将IsSynchronizedWithCurrentItem设置为true,要么您不想.您不太可能希望使用主 - 详细信息绑定,然后始终在列表框中没有当前选定的项目
我有5个测试方法来测试PasswordManager对象的功能.我使用visual studio 2008的内置测试引擎.这个管理器可以使用两个依赖项:XMLStorageManager或DbStorageManager.Dependency在Passwordmanager的构造函数中设置.如何运行测试两次,唯一不同的是我使用的StorageManager类型?
(我知道,我知道,这些不是单元测试...)
我有一个视图,用户可以通过选择checkboxex选择任意数量的俱乐部.俱乐部是主要模型的属性,类型为List <ClubModel>.在重构的过程中,我从这开始:
@using (Html.BeginForm())
{
<fieldset>
<legend>Voor Select clubs </legend><br />
<table>
<tr>
@for (var i = 0; i < Model.Clubs.Count; i++)
{
if (i % 3 == 0)
{
@:</tr><tr>
}
<td>
@Html.HiddenFor(model => model.Clubs[i].ClubID)
@Html.EditorFor(model => model.Clubs[i].IsAvailable)
</td>
<td>@Html.DisplayFor(model => model.Clubs[i].ClubName)</td>
}
</tr>
</table>
<input type="submit" value="Submit" />
</fieldset>
}
Run Code Online (Sandbox Code Playgroud)
这样可以正常工作:模型将返回一个填充的Clubs属性.
现在我取出 <td>标签并将它们移动到EditorTemplate:
@using (Html.BeginForm())
{
<fieldset>
<legend>Select Clubs </legend><br />
<table>
<tr>
@for (var i = 0; i < Model.Clubs.Count; i++)
{
if (i % …Run Code Online (Sandbox Code Playgroud) 我们的VB6应用程序在很大程度上依赖于scrrun.dll(Windows Scripting Host)的使用.直到一年前,我们还使用安装程序部署了这个dll.由于Windows Scripitng Host应该是Windows的一部分,因此我们从安装包中删除了dll.但是,偶尔会在其系统上使用非功能性scrrun.dll的客户,我们必须帮助他们重新安装或重新注册.
那么,我们应该将scrrun.dll放回安装包中吗?我们应该对安装进行一些检查吗?或者,我们是否应该接受这样一个事实,即我们必须为我们的一些客户提供支持以正确设置他们的系统?
Bridge的游戏是用52种不同的扑克牌进行的,这些扑克牌随机分布在四个玩家中,每个玩家最终得到13张牌:一个所谓的"交易".大概少于2 ^ 96的Bridge交易是可能的.在本文档中,生成随机交易的程序的要求描述如下:
- 该软件应该能够生成所有可能的桥接协议,因为这也可以通过手动处理实现.
- 软件应该以相同的概率生成每笔交易,而不受董事会编号,之前的手或任何其他情况的影响.
- 即使在会议中看到所有其他交易之后,也无法预测交易.
本文继续说明伪随机生成器不能用于生成交易,因为看到伪随机序列的第一个元素将使得计算所使用的种子成为可能,从而使黑客能够预测将要跟随的交易.
此外,由于大多数伪随机生成器采用32位的种子,因此应该遵循这些生成器将能够产生最多2 ^ 32个不同的桥接交易,而不是所需的2 ^ 96,并且遵循所谓的生日悖论,在2 ^ 32交易的平方根之后,很可能会产生相同的交易.
描述Bridge交易生成应用程序要求的文档的作者编写了一个程序,在世界范围内用于生成随机交易,使用键盘上的人类输入生成96位种子.十四年来,这种方法没有出现任何缺陷.
我想编写一个例程,放弃使用人工输入来生成所需种子的需要.
来了RNGCryptoServiceProvider.我使用下面的代码生成随机数,首先在1到52的范围内,然后在1到51的范围内,依此类推,直到剩下一张卡.
测试得到的交易我非常有信心这个代码能够以相同的概率产生任何交易能力,并且任何卡结束四个玩家之一的机会等于0.25.
但由于我不知道RNGCryptoServiceProvider中使用的种子的强度,我想知道是否:
编辑 获得此问题中先前提到的随机数的方法存在缺陷.如果这个代码能够产生2 ^ 96个不同的Bridge交易,这就分散了主要问题.我将随机数发生器替换为Stephen Taub和Shawn Farkas在MSDN杂志上发布的那个
用于生成加密安全随机数的代码,范围为1-52,1-51,依此类推,最高可达1-2,取自本网站
/// <summary>
/// Returns a random number within a specified range.
/// </summary>
/// <returns>
/// A 32-bit signed integer greater than or equal to <paramref name="minValue"/> and less than <paramref name="maxValue"/>; that is, the range of return …Run Code Online (Sandbox Code Playgroud) 我有一个简单的消息系统,到目前为止使用基于文件的存储.由于系统用户数逐渐增加,我想切换到基于数据库的存储.
在代码中,消息服务器维护用户列表(带有凭据)和消息列表.Message对象的主要字段是Sender(User类型),Recipients(类型为User [])和Content(类型为string).
通常,用户将从服务器请求发送给他的消息,并接收其中"收件人"字段包含其自己的用户名的所有消息.
因此,对于数据库,我设想了以下表:
-A Users表
-A Messages表
( - 每个用户的表,指定由MessageID发送给他的消息)?
我遇到的问题是如何存储收件人字段(其中包含一个数组),以便数据库查询可以搜索请求接收发送给他的邮件的用户.我没有比为在系统上注册的每个新用户动态创建表更好的解决方案,该系统保存对作为收件人列出的消息的引用.其他方法可能吗?
非常感谢!
我实现了自己的撤消/重做功能(在网络上的大量帮助下),这很有启发性。撤消和重做命令在 ViewModel 中定义。我可以通过Command的属性将这些命令连接起来MenuItem。最后一步,我想通过标准 CTRL-Z 和 CTRL-Y 键盘快捷键连接这些命令。
令我沮丧的是,我发现MenuItem班级不支持这一点。如果使用 WinForms,这会是小菜一碟,但在 WPF 中实现这一点似乎相当复杂。如何最容易做到?
.net ×5
wpf ×3
.net-4.0 ×1
asp.net-mvc ×1
c# ×1
clickonce ×1
command ×1
connection ×1
cryptography ×1
dependencies ×1
deployment ×1
installation ×1
listbox ×1
mvvm ×1
random ×1
razor ×1
selecteditem ×1
sql ×1
testing ×1
vb6 ×1
web-config ×1
wpf-4.0 ×1
wpf-controls ×1
wsh ×1