小编Vil*_*nen的帖子

如何使用Mono和mkbundle将简单的.Net控制台项目转换为可移植的exe?

我想将我简单的纯.Net 2.0控制台实用程序转换为便携式exe文件,我可以将其放在USB记忆棒上运行,而不必担心CLR和框架库是否安装在特定的机器上.

Stackoverflow已经有一些关于使用MonoMkbundle从.Net-projects创建自包含Windows exes的信息,但我想要的是一个紧凑但有用的HOWTO.

从简单的C#Visual Studio项目实现可移植性的最小步骤是什么?

.net c# mono portability mkbundle

14
推荐指数
1
解决办法
6145
查看次数

C#不安全值类型数组到字节数组转换

我使用扩展方法将float数组转换为字节数组:

public static unsafe byte[] ToByteArray(this float[] floatArray, int count)
{
    int arrayLength = floatArray.Length > count ? count : floatArray.Length;
    byte[] byteArray = new byte[4 * arrayLength];
    fixed (float* floatPointer = floatArray)
    {
        fixed (byte* bytePointer = byteArray)
        {
            float* read = floatPointer;
            float* write = (float*)bytePointer;
            for (int i = 0; i < arrayLength; i++)
            {
                *write++ = *read++;
            }
        }
    }
    return byteArray;
}
Run Code Online (Sandbox Code Playgroud)

我知道数组是指向与元素类型和数量信息相关的内存的指针.此外,在我看来,如果没有像上面那样复制数据,就没有办法从字节数组转换到字节数组.

我明白了吗?甚至不可能编写IL来从指针,类型和长度创建数组而不复制数据?

编辑:谢谢你的答案,我学到了一些基础知识,并尝试了新的技巧!

在最初接受Davy Landman的回答之后,我发现虽然他出色的StructLayout hack确实将字节数组转换为浮点数组,但它却无法正常工作.展示:

[StructLayout(LayoutKind.Explicit)]
struct UnionArray
{
    [FieldOffset(0)]
    public …
Run Code Online (Sandbox Code Playgroud)

c# arrays pointers unsafe type-conversion

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

如何使设计器生成的.Net应用程序设置可移植

我一直在寻找修改多普勒播客聚合器的来源,目标是能够直接从我的MP3播放器运行程序.

多普勒使用Visual Studio设计器生成的Settings类存储应用程序设置,该类默认将用户设置序列化到用户的主目录.我想改变它,以便所有设置都存储在与exe相同的目录中.

看来这可以通过创建继承SettingsProvider类的自定义提供程序类来实现.有没有人创建过这样的提供商并希望共享代码?

更新:通过使用此MSDN示例,即使用简单的继承,我能够使自定义设置提供程序几乎正常工作.我最初感到困惑,因为Windows Forms设计器停止工作,直到我在Codeproject上做了这个技巧:

internal sealed partial class Settings
{
    private MySettingsProvider settingsprovider = new MySettingsProvider();

    public Settings()
    {
        foreach (SettingsProperty property in this.Properties)
        {
            property.Provider = settingsprovider;
        }
    ...
Run Code Online (Sandbox Code Playgroud)

该程序仍然以窗口大小0; 0开始.

有任何见解的人吗?

  • 为什么需要在运行时协助提供程序 - 而不是使用MSDN建议的属性?
  • 为什么使用默认设置提供程序和自定义提供程序将默认设置传递给应用程序的方式有何变化?

.net c# settings portability

5
推荐指数
1
解决办法
9158
查看次数

T-SQL的表级差异和同步过程

我对T-SQL源代码感兴趣,该源代码用于将表(或可能是其子集)与来自另一个类似表的数据同步.这两个表可以包含任何变量,例如我可以拥有的变量

 base table    source table 
 ==========    ============
 id     val    id       val
 ----------    ------------
 0        1    0          3
 1        2    1          2
 2        3    3          4
Run Code Online (Sandbox Code Playgroud)

要么

 base table             source table 
 ===================    ==================
 key    val1    val2    key   val1    val2
 -------------------    ------------------
 A         1       0    A        1       1  
 B         2       1    C        2       2
 C         3       3    E        4       0
Run Code Online (Sandbox Code Playgroud)

或任何两个包含类似名称的类似列的表.我希望能够

  • 检查两个表是否具有匹配的列:源表与基表具有完全相同的列,并且数据类型匹配
  • 从基表到源表的diff
  • 执行必要的更新,删除和插入以更改基表中的数据以对应源表
  • 可选地将diff限制为基表的子集,

最好是存储过程.有没有人为此写过存储过程,还是你指向一个来源?

sql t-sql database synchronization

5
推荐指数
1
解决办法
3330
查看次数

如何在 .NET 中将提示/标记写入 WAV 文件

我想用 C# 将提示(即基于时间的标记,而不是类似 ID3 的标记)写入 WAV 文件。NAudio 和 Bass.NET 等免费 .NET 音频库似乎不支持此功能。

我找到了Cue Tools的来源,但它完全没有文档记录并且相对复杂。还有其他选择吗?

.net c# audio wav

3
推荐指数
1
解决办法
4155
查看次数

这是旅行商问题的变化吗?

我对两个单词列表的功能感兴趣,这两个单词列表将返回它们之间的顺序不可知的编辑距离.

也就是说,参数将是两个(例如空格分隔)单词列表,返回值将是列表中单词的编辑(或Levenshtein)距离的最小总和.

"cat rat bat"和之间的距离"rat bat cat"将为0. "cat rat bat"和之间的"fat had bad"距离与"rat bat cat"和之间的距离相同"had fat bad".4.如果列表中的单词数不相同,则较短的列表将填充0长度的单词.

我的直觉(没有用计算机科学课程培养)没有找到任何其他解决方案而不是使用蛮力:

   |had|fat|bad|   a solution
---+---+---+---+ +---+---+---+
cat| 2 | 1 | 2 | |   | 1 |   |
---+---+---+---+ +---+---+---+
rat| 2 | 1 | 2 | | 3 |   |   |
---+---+---+---+ +---+---+---+
bat| 2 | 1 | 1 | |   |   | 4 |
---+---+---+---+ +---+---+---+
Run Code Online (Sandbox Code Playgroud)

从第一行开始,选择一列并转到下一行,而无需重新访问已访问过的列.一遍又一遍地这样做,直到你尝试了所有的组合.

对我来说这听起来有点像旅行推销员的问题.是吗,你会如何解决我的特定问题?

language-agnostic string algorithm fuzzy traveling-salesman

3
推荐指数
1
解决办法
702
查看次数

SAS Proc SQL在合并时是否曾使用过索引

考虑以下(当然很长)的例子.

示例代码创建两个数据集,数据一个具有"关键"变量i,j,k,数据二个具有关键变量j,k和"值"变量x.我想尽可能有效地合并这两个数据集.两个数据集都是针对j和k编制索引的:不应该需要第一个数据的索引,但无论如何它都在那里.

Proc SQL不使用数据二中的索引,如果数据位于关系数据库中,我认为就是这种情况.这只是我必须接受的查询优化器的限制吗?

编辑:这个问题的答案是肯定的,SAS可以使用索引来优化PROC SQL连接.在下面的示例中,数据集的相对大小很重要:如果修改代码以使数据2变得比数据1大,则将使用index.数据集是否排序无关紧要.

* Just to control the size of the data;
%let j_max=10000;

* Create data sets;
data one;
    do i=1 to 3;
        do j=1 to &j_max;
            do k=1 to 4;
                if ranuni(0)<0.9 then output;
            end;
        end;
    end;
run;

data two;
    do j=1 to &j_max;
        do k=1 to 4;
            x=ranuni(0);
            if ranuni(0)<0.9 then output;
        end;
    end;
run;

* Create indices;
proc datasets library=work nolist;
    modify one;
    index create idx_j_k=(j k);
    modify two;
    index create idx_j_k=(j …
Run Code Online (Sandbox Code Playgroud)

sql indexing performance sas

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