小编Pay*_*aya的帖子

从代码执行FluentMigrator迁移

是否有任何教程或示例代码用于FluentMigrator从代码中执行迁移?一些"入门......"教程会很棒.所有我能找到的都是FluentMigrator.Tests(单元测试),内部FluentMigrator源代码,没有"入门......"那样有用.

我只想在项目中添加几个类,并从项目运行迁移,无需外部工具.是否可以在Fluent Migrator中使用?就像是

FluentMigrator.Migrate("database path", typeof(Migration024));
Run Code Online (Sandbox Code Playgroud)

我打电话给Program.Main()谁?

.net c# migration data-migration fluent-migrator

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

在Win7中刷新Windows资源管理器

我的计划设定"HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced"价值"Hidden".Hovewer我无法刷新资源管理器以考虑此更改.我试过了:

1)

    SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, IntPtr.Zero, IntPtr.Zero);` 
Run Code Online (Sandbox Code Playgroud)

2)

    SHELLSTATE state = new SHELLSTATE(); 
    state.fShowAllObjects = (uint)1; 
    SHGetSetSettings(ref state, SSF.SSF_SHOWALLOBJECTS, true); 
Run Code Online (Sandbox Code Playgroud)

3)

    SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, SPI_SETNONCLIENTMETRICS, 0, SMTO_ABORTIFHUNG, 5000, ref dwResult); 
Run Code Online (Sandbox Code Playgroud)

4)

    SendMessage(HWND_BROADCAST, WM_COMMAND, 28931 /* Refresh */, 0); 
Run Code Online (Sandbox Code Playgroud)

什么都行不通.所以我该怎么做?如果我用F5自己刷新资源管理器,那么它可行.Hovewer我想要一些优雅的解决方案,所以它会在任何地方刷新显示,甚至在OpenFile/ SaveFile对话框中,这些都是当前打开的.

我正在使用C#.NET,Win7.

状态更新#1

正如所Anders指出的,有一种使用COM刷新资源管理器窗口的简单方法:

Guid CLSID_ShellApplication = new Guid("13709620-C279-11CE-A49E-444553540000");
Type shellApplicationType = Type.GetTypeFromCLSID(CLSID_ShellApplication, true);
dynamic shellApplication = Activator.CreateInstance(shellApplicationType);
dynamic windows = shellApplication.Windows();
for (int i = 0; i < windows.Count; i++)
    windows.Item(i).Refresh();
Run Code Online (Sandbox Code Playgroud)

所以这一部分已经完成.Hovewer我仍然需要刷新 …

.net c# windows windows-explorer windows-7

16
推荐指数
1
解决办法
7464
查看次数

WPF用什么来捕获鼠标和键盘输入?

我全局(系统范围)使用SetWindowsHookEx和过滤某些鼠标点击WH_MOUSE_LL.问题是它不适用于WPF应用程序(所有WPF应用程序都检测鼠标点击,无论我是否指示系统忽略这些点击).我已经在这里问了一个类似的问题,但我假设WPF使用DirectInput而不是标准的Windows消息来检测输入.但是呢?

我已经能够找到一个能够使用鼠标点击进入WPF应用程序SendMessage的代码.如果这是可能的,那么我认为它意味着WPF不DirectInput用于鼠标输入.但是,为什么不能阻止WPF应用程序检测鼠标点击SetWindowsHookEx

虽然这个问题主要是关于鼠标输入,但我也想知道它对于键盘输入是如何工作的.

我已经快速创建了以下解决方案来重现奇怪的WPF行为.它由3个项目组成:

  • HookTester
    StartUp项目,自动启动其他2个项目,所以你应该主要关注这一个.启动时安装鼠标挂钩,并在关闭表单时卸载挂钩.

  • WinFormsTest
    包含一个带有默认上下文菜单的TextBox,您可以在其中测试鼠标右键.当HookTester运行时,您不能使用鼠标右键调用上下文菜单.

  • WpfTest也
    包含一个TextBox,带有自定义上下文菜单(虽然我也可以使用默认菜单),所以这又是测试鼠标右键的地方.只要HookTester正在运行,您就无法调用上下文菜单(使用鼠标右键),但出于某种原因,菜单仍将显示(Why ???).

警告:当您运行解决方案时,HookTester项目将启动并立即安装挂钩以拒绝任何右键鼠标点击(系统范围内).只需关闭HookTester表单即可轻松卸载挂钩.谨慎测试.

下载SO5036143.ZIP: 镜子1,镜子2

.net wpf hook input mouse-hook

16
推荐指数
1
解决办法
4086
查看次数

Win C#:在没有UAC提示的情况下以管理员身份运行app

我需要一个我的.exe始终以管理员身份运行而不提示UAC.我的程序将安装设置,这将具有一次管理员权限,我需要在此设置中执行这样的步骤,我的exe将始终作为管理员执行而不提示UAC.

到目前为止我找到了2个解决方案:

1.使用自定义服务,这将为我提升程序.

2.使用任务计划程序.

还有其他解决方案吗?有些表现可能吗?

谢谢.

.net c# windows uac

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

使用哪种ORM?

我正在开发一个具有以下类的应用程序:

class Shortcut
{
    public string Name { get; }
    public IList<Trigger> Triggers { get; }
    public IList<Action> Actions { get; }
}

class Trigger
{
    public string Name { get; }
}

class Action
{
    public string Name { get; }
}
Run Code Online (Sandbox Code Playgroud)

而且我将有20多个课程,这些课程将来自TriggerAction,所以最后,我将有一个Shortcut课程,15个来自的Action课程和5个来自的Trigger课程.

我的问题是,哪种ORM最适合这种应用? EF,NH,SubSonic,也许别的东西(Linq2SQL)?

我将定期发布新的应用程序版本,添加更多触发器和操作(或更改当前触发器/操作),因此我还必须更新数据库模式.我不知道是否提供EFNH提供任何好的方法来轻松更新架构.或者,如果他们这样做,是否有任何教程如何做到这一点?

我已经发现这个文章关于NH模式更新,报价:

幸运的是,NHibernate为我们提供了更新现有模式的可能性,即NHibernate创建了一个可以应用于数据库的更新脚本.

我从来没有找到如何实际生成更新脚本,所以我无法告诉NH更新架构.也许我误读了一些东西,我只是没找到它.

注意:如果你建议 …

c# subsonic nhibernate orm entity-framework

13
推荐指数
2
解决办法
870
查看次数

将字节数组转换为任何基数

我有一个字节数组(任意长度),我想用我自己的基本编码器将这个数组编码成字符串.In .NET是标准Base64编码器,但如果我想对数组进行编码Base62,Base53或者Base13

甚至可以创建这样的通用基础编码器?

我知道我可以用简单的方法做到这一点,也就是说,对于每个字节保留固定数量的字符(如果是Base62,那将是5个字符),并做直接字节 - >字符编码,但我会浪费空间,因为5个Base62字符可以包含多于1个字节,但少于2个字节.

我应该怎么写这样的编码器?或者已经有一些课程了吗?
请注意我也需要通用解码器,否则这对我来说没用.

资源

由于该解决方案已经知道(使用BigInteger),我只想在这里提供一些与BigInteger该类相关的资源,因为它在.NET 3.5中不可用:

C#中的大整数
http://intx.codeplex.com/
https://svn.apache.org/repos/asf/incubator/heraldry/libraries/csharp/openid/trunk/Mono/Mono.Math/BigInteger.cs
http ://www.codeproject.com/KB/cs/BigInteger_Library.aspx
http://www.codeproject.com/KB/cs/biginteger.aspx

.net c# algorithm base64 encoding

12
推荐指数
2
解决办法
6097
查看次数

双色Path对象

下图说明了我要实现的目标:

http://i53.tinypic.com/14ugfpd.png

基本上我想创建两个Path彼此"接触"的对象(并行路径).这是用于生成此图像的XAML:

<StackPanel Orientation="Horizontal">
    <StackPanel.LayoutTransform>
        <ScaleTransform CenterX="0" CenterY="0" ScaleX="15" ScaleY="15" />
    </StackPanel.LayoutTransform>

    <Grid Margin="-5,0,0,0">
        <Path Stroke="Blue">
            <Path.Data>
                <PathGeometry>M10,10 C20,10 10,20 20,20</PathGeometry>
            </Path.Data>
        </Path>
        <Path Stroke="Red">
            <Path.Data>
                <PathGeometry>M10,11 C19,10.85 9,20.80 20,21</PathGeometry>
            </Path.Data>
        </Path>
    </Grid>

    <Grid Margin="-5,0,0,0">
        <Path Stroke="Blue">
            <Path.Data>
                <PathGeometry>M10,10 C20,10 10,20 20,20</PathGeometry>
            </Path.Data>
        </Path>
        <Path Stroke="Red">
            <Path.Data>
                <PathGeometry>M10,11 C19,11 9,21 20,21</PathGeometry>
            </Path.Data>
        </Path>
    </Grid>
</StackPanel>
Run Code Online (Sandbox Code Playgroud)

第一条曲线具有手动优化的点位置,第二条曲线具有通过考虑行程厚度而容易计算的点位置.你可以看到第二条曲线并不完美,因为两者之间有一个空间.如何以编程方式创建两条完美的"触摸"曲线,而无需手动优化每条曲线(实际上这是不可能的,因为曲线是在代码中生成的)?

简单地说,我Path在代码中生成一条曲线(resp.),我需要它有两种颜色.所以我认为制作第二个并行Path可以做到这一点,但调整Geometry第二个Path(使它并行)已被证明是有问题的.

更新#1

平行的直线和曲线查尔斯Petzold的可能是解决这个问题的方法之一.它实际上工作得很好,但它会使曲线变平,这会在深度缩放时产生视觉效果,当然还有性能缺陷.

然而,该算法不会尝试找到与另一个贝塞尔曲线平行的贝塞尔曲线.该算法完全基于折线:输入是一条或多条折线,输出由每条输入折线的多条折线组成.因此,ParallelPath需要"展平"输入几何体 - 这意味着将整个几何体(包括圆弧和贝塞尔曲线)转换为折线近似.

更新#2

所以我的一个朋友(数学博士感受器)已经分析了这个问题并且创建(三阶) …

.net c# wpf xaml curve

12
推荐指数
2
解决办法
2901
查看次数

适用于Windows的Mono的好IDE

我想在Windows上用C#开发Win/Linux/Mac的Mono应用程序.有没有真正好的(Visual Studio可比较的)IDE?如果我能够设法Visual C# Express使用Mono编译器编译解决方案,那将是最好的.

我找到了一个#developIDE,它看起来非常酷,并且具有很多功能,Visual Studio的Express版本没有(比如TortoiseSVN,NUnit等的插件).Hovewer 3.*版本放弃了对Mono的支持,因此您无法再使用Mono编译器编译解决方案.

还有一个MonoDevelop.我试过了,很糟糕.根本不可与Visual Studio相媲美.没有WinForms设计师,+吨其他缺少的功能.我想他们是否会放弃MonoDevelop的开发并为#develop构建一个插件.

有没有其他足够好的IDE,或者是否有可能使Visual C#Express或#develop使用Mono编译器编译解决方案?

编辑:Delphi Prism看起来很酷,但它不是C#.

c# windows mono sharpdevelop monodevelop

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

低级鼠标钩和DirectX

我正在构建一个需要在系统范围内过滤鼠标点击的应用程序.也就是说,我需要在特殊情况下让系统忽略一些鼠标按钮点击.

我使用低级鼠标钩并SetWindowsHookEx过滤掉这些点击.除WPF应用程序外,它的工作相对较好.我想这是因为这些应用程序使用DirectXDirectInput进行输入处理,这就是为什么我不能过滤掉这些应用程序中的点击,因为它们直接从驱动程序获得输入.

有没有办法过滤WPF/ DirectX应用程序中的点击?

我知道全局过滤点击通常不是一个好主意,但它对我的应用程序至关重要,我会确保它不会在游戏和其他程序中过滤.但是WPF应用程序很普通GUI,所以我也需要过滤它们中的点击.

更新

我想我可以通过编写自己的过滤驱动程序来解决这个问题,但由于我没有编写驱动程序的经验,如果有任何其他解决方案,请告诉我.

API挂钩资源

我找到了一些有关API挂钩的有用链接.使用此作为参考.

挂钩Windows API
API挂钩透露
API挂钩透露第2部分
劫持Textout调用记事本
madCodeHook
IAT功能挂钩

最终解决方案

WPF不使用DirectInput,而是使用标准的Win32消息进行输入处理(除了手写笔,这是我所有问题的根源,因为我使用手写笔进行开发,我不知道WPF应用是手写笔感知的).但是,对于使用DirectInput的应用程序中的点击过滤,必须挂钩API,正如接受的答案所解释的那样.

.net directx mouse hook directinput

9
推荐指数
1
解决办法
3732
查看次数

在商业应用中使用Fluent NHibernate

我想Fluent NHibernate在商业桌面应用程序中使用,我很少关注许可.我已经下载了Fluent NHibernate预编译的二进制文件,它包含这个文件列表:

Antlr3.Runtime.dll
Castle.Core.dll
Castle.DynamicProxy2.dll
FluentNHibernate.dll
Iesi.Collections.dll
log4net.dll
NHibernate.dll
NHibernate.ByteCode.Castle.dll

我想我必须将所有这些文件添加到我的Inno Setup脚本中,然后将其安装在用户的计算机上.但是,如何遵守与每个文件相关的所有许可证呢?我确信我不是第一个想要Fluent NHibernate在商业应用中使用的人,所以我希望我不必研究每个许可证.

我不是律师.

.net c# licensing fluent-nhibernate

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