小编ang*_*son的帖子

如何将非托管dll和托管程序集合并到一个文件中?

来自PHX Software的 SQLite 将托管程序集(System.Data.SQLite)与非托管DLL(SQLite 32位或64位dll)组合到一个文件中,并设法将它们链接在一起.

我该怎么做呢?我是否需要将托管程序集嵌入到非托管dll中,反之亦然?

即.我的问题是:

  1. 我需要以哪种顺序执行此操作?
  2. 为了做到这一点,我需要哪些工具或知识?
  3. 如何(如果不同)从托管代码中的非托管dll链接到导出的函数?

我问这个的原因是我想构建一个托管的zLib包装器.我知道在.NET中有托管类,但从经验来看它们有点受限(并且有点愚蠢,因为它们没有做适当的缓冲),所以我想创建自己的副本,也因为我想要学习如何做到这一点.

那么有谁知道我需要做什么以及如何做?

我发现了以下内容:

我将尝试这个,但任何其他可用的信息也会很好.

embed dll assemblies unmanaged managed

7
推荐指数
1
解决办法
1821
查看次数

从线生成多边形

我想画一条厚度为j2me的线.通过将Pen width设置为厚度值,可以在桌面java中轻松实现.但是在j2me中,Pen类不支持宽度.我的想法是从我拥有的线生成一个多边形,类似于我想要绘制的厚度线.在图片中,左边是我所拥有的,带有点的线.在右边是我想要的,一个多边形,当填充时,一条线有厚度.谁能知道如何从线生成多边形?

alt text http://www.freeimagehosting.net/uploads/140e43c2d2.gif

c# graphics geometry drawing 2d

7
推荐指数
1
解决办法
3237
查看次数

通过复制整个目录来"分支"本地mercurial存储库克隆是否安全?

如果我在当地有一个相当大的Mercurial项目,并希望进行实验,我是否可以安全地制作一份本地副本并在那里工作?

例如,假设我这样做:

  1. 将存储库从中央服务器克隆到本地目录
  2. 进行一些更改,在本地提交,不要推送
  3. 在本地制作目录的副本
  4. 在本地进行一些更改,提交,不要推送
  5. 推送原件
  6. 推送第二份副本

这样安全吗?或者在克隆时是否生成了一些唯一的ID?

一个项目相当大,服务器的连接速度相当慢,或者看起来如此,所以从中央服务器完成一个完整的克隆需要很长时间.

mercurial branch clone

7
推荐指数
1
解决办法
360
查看次数

Mercurial托管软件,替代品?

是否有任何软件包可用于在我自己的服务器上托管Mercurial存储库,除了它附带的非常基本的脚本?

我查看了Mercurial 上的PublishingRepositories维基页面,该列表中唯一可行的替代方案是hgwebdir我设置的脚本,但它相当基本.

有没有人为Mercurial托管制作更好的网站软件?

deployment hosting mercurial dvcs

7
推荐指数
2
解决办法
1670
查看次数

从C#通过Process类生成时,正确处理程序的标准错误和输出的方法?

我阅读了Process.StandardOutput的文档,其中包含以下引用:

如果父进程在p.StandardOutput.ReadToEnd之前调用p.WaitForExit并且子进程写入足够的文本来填充重定向的流,则可能导致死锁条件.

所以我很想知道.如果我还害怕在某些情况下可以填充StandardError,那么正确的方法是什么?

我是否必须使用循环来交替读取标准输出和错误,以避免填充,或者这个简单的代码是否足够:

string error = proc.StandardError.ReadToEnd();
string output = proc.StandardOutput.ReadToEnd();
bool didFinish = proc.WaitForExit(60000);
Run Code Online (Sandbox Code Playgroud)

在发布了一些答案后编辑

那么这是正确的方法吗?

var output = new StringBuilder();
proc.OutputDataReceived += (s, e) => output.Append(e.Data);
proc.BeginOutputReadLine();
string error = proc.StandardError.ReadToEnd();
bool didFinish = proc.WaitForExit(60000);
Run Code Online (Sandbox Code Playgroud)

然后我只在进程实际完成时才使用stringbuilder内容.

这是正确的方法吗?

.net subprocess process waitforexit redirectstandardoutput

7
推荐指数
1
解决办法
3921
查看次数

使用int作为枚举有什么意义

为什么很多人都这样做:

public enum EmployeeRole
{
  None = 0,
  Manager = 1,
  Admin = 2,
  Operator = 3
}
Run Code Online (Sandbox Code Playgroud)

而不只是做:

public enum EmployeeRole
{
  None,
  Manager,
  Admin,
  Operator
}
Run Code Online (Sandbox Code Playgroud)

有优势吗?

c# enums coding-style

7
推荐指数
1
解决办法
178
查看次数

WPF TextBox:如何将绑定模式默认更改为OneWay?

最初,我有以下代码:

<TextBox Text="{Binding LengthUnit, Mode=OneWay}" IsReadOnly="True" Background="{x:Static SystemColors.ControlBrush}" />
Run Code Online (Sandbox Code Playgroud)

我知道我可以定义这样的样式:

<Style TargetType="{x:Type TextBox}" x:Key="readOnlyTextBox">
    <Setter Property="Background" Value="{x:Static SystemColors.ControlBrush}"></Setter>
    <Setter Property="IsReadOnly" Value="True"></Setter>
</Style>
Run Code Online (Sandbox Code Playgroud)

这样我就可以写:

<TextBox Text="{Binding LengthUnit, Mode=OneWay}" Style="{StaticResource readOnlyTextBox}" />
Run Code Online (Sandbox Code Playgroud)

因为此文本框是只读的,所以绑定模式不能是双向的.那么,是否可以使用此样式将OneWay绑定作为我的TextBox的默认值?

编辑:我需要将绑定模式更改为OneWay,因为我的属性是get-only,而不是因为我标记了TextBox只读.但是,如果可能的话,我仍然希望将文本框的默认绑定模式更改为OneWay.


这是我遵循你的建议的代码,但它不起作用.我错过了什么吗?

public class ReadOnlyTextBox : TextBox
{
    static ReadOnlyTextBox()
    {
        TextBox.TextProperty.OverrideMetadata(typeof(ReadOnlyTextBox), 
            new FrameworkPropertyMetadata() { BindsTwoWayByDefault = false, Journal = true, DefaultUpdateSourceTrigger = UpdateSourceTrigger.Explicit }); 
    }
    public ReadOnlyTextBox()
    {
        base.Background = SystemColors.ControlBrush;
        base.IsReadOnly = true;            
    }
}
Run Code Online (Sandbox Code Playgroud)

wpf binding textbox binding-mode

7
推荐指数
1
解决办法
9405
查看次数

MonoTouch项目的类库,"不是使用活动配置构建",如何修复?

我正在尝试构建一组类库,以便在我们要创建的应用程序之间共享代码.

但是,我无法正确创建项目,我无法看到我做错了什么.

让我来看看我用来重现这个的步骤,也许这里有人可以看到我做错了什么:

  1. 在新的MonoDevelop实例中,我转到File-> New Solution
  2. 我选择MonoTouch Library Project模板,并为其指定一个合适的名称
  3. 然后,我将一个新的应用程序项目添加到解决方案中(以模拟在应用程序中使用库),类型为"iPhone Single View Application"
  4. 我将应用程序项目作为启动项目
  5. 我在应用程序项目中添加了对库项目的引用
  6. 然后我建立

这是有效的,如果我选择Run-> Debug菜单项,我可以在模拟器中看到应用程序打开.

我们假设我现在要在iPhone上测试它,所以我访问工具栏中的下拉列表,选择"Debug | iPhone"构建目标,并立即将类库项目变为灰色:

(不是内置的主动配置)

如果我右键单击解决方案,请检查配置映射,当选择与模拟器或iPhone相关的任何内容时,类库将完全从视图中消失,并且无法选择构建.

构建目标下拉列表现在还有6个项目,iPhone的调试,发布,调试/发布以及模拟器的调试/发布.显然,只有不适用于iPhone或模拟器的Debug和Release才能构建类库.

我在这做错了什么?

在一个我没有能够寻找解决方案的奢侈品的另一个项目中,我最终创建了一个空的通用项目,是否是"正确"的方法来缓解这个问题?

class-library monodevelop xamarin.ios

7
推荐指数
1
解决办法
2303
查看次数

将TypeScript编译器加载到ClearScript中,"WScript未定义",不可能完成任务?

我尝试使用ClearScript加载TypeScript编译器以编译一些基本的TypeScript代码.

不幸的是,在执行TypeScript编译器源时,我收到此错误:

'WScript'未定义

这是我使用的LINQPad程序,将ClearScript dll和TypeScript编译器文件放在.linq程序旁边:

void Main()
{
    using (var js = new Microsoft.ClearScript.Windows.JScriptEngine(Microsoft.ClearScript.Windows.WindowsScriptEngineFlags.DisableSourceManagement))
    {
        var typeScriptSource = File.ReadAllText(Path.Combine(Path.GetDirectoryName(Util.CurrentQueryPath), "tsc.js"));
        js.Execute(typeScriptSource);
        const string typeScriptCode = @"
            class Greeter {
                greeting: string;
                constructor(message: string) {
                    this.greeting = message;
                }
                greet() {
                    return ""Hello, "" + this.greeting;
                }
            }
            function test()
            {
                var greeter = Greeter(""world"");
                return greeter.greet();
            }
        ";
        js.Script.TypeScript.Compile(typeScriptCode);

        object result = js.Script.test();
        result.Dump();
    }
}

#region Copy ClearScript to correct location …
Run Code Online (Sandbox Code Playgroud)

.net c# windows-scripting typescript clearscript

7
推荐指数
3
解决办法
3125
查看次数

用Json.Net反序列化,将子对象反序列化为字符串/类似的持有json?

我正在尝试使用Json创建配置文件,该文件将保存各种类型对象的配置.

考虑这个文件:

{
    "cameras": [
        {
            "type": "Some.Namespace.CameraClass",
            "assembly": "Some.Assembly",
            "configuration": {
                "ip": "127.0.0.1",
                "port": 8080
            }
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

在运行时,我将使用两个"类型"和"程序集"属性来构造支持特定接口的对象,然后我想将配置加载到该对象中.

但是,在编译时我不知道"配置"将映射到的类型.我想将它保留为json"属性"并将其提供给相机对象,然后让该对象将json反序列化为正确的类型.

因此,我想将包含特定相机类型配置的配置文件的一部分"随身携带"到对象本身,然后让它处理它,像我一样把它当作黑盒子处理它.应该保留该部分的结构,因为在为每个摄像机实现创建配置类型时我想要完全保真,甚至在必要时添加子对象.

对于这个特定的相机,我会配置一个IP地址和一个端口,对于其他一些相机我需要授权数据,而对于其他一些相机则完全不同.

我希望保持这种配置的属性能够直接获取Json,仍然是一个字符串.

这可能吗?

这是一个LINQPad示例,其中有一些位被注释掉:

void Main()
{
    const string configurationFile = @"[
    {
        ""type"": ""UserQuery+Camera1"",
        ""configuration"": { ""id"": 10 }
    },
    {
        ""type"": ""UserQuery+Camera2"",
        ""configuration"": { ""name"": ""The second camera"" }
    }
]";
    var cameras = JsonConvert.DeserializeObject<Camera[]>(configurationFile);
    foreach (var camera in cameras)
    {
        var type = Type.GetType(camera.Type);
        var instance = Activator.CreateInstance(type, new object[0]) as ICamera; …
Run Code Online (Sandbox Code Playgroud)

c# json.net

7
推荐指数
1
解决办法
3745
查看次数