小编Bri*_*ian的帖子

尝试在Wix中使用EnsureTable来修复验证错误

当我尝试使用msvbvm60.msm合并模块时,我在Wix 3.0中遇到了很多错误:

C:\[...]: error LGHT0204 : ICE03: Table: Registry Column: Registry Missing specifications in _Validation Table (or Old Database)
C:\[...]: error LGHT0204 : ICE03: Table: Registry Column: Root Missing specifications in _Validation Table (or Old Database)
C:\[...]: error LGHT0204 : ICE03: Table: Registry Column: Key Missing specifications in _Validation Table (or Old Database)
C:\[...]: error LGHT0204 : ICE03: Table: Registry Column: Name Missing specifications in _Validation Table (or Old Database)
C:\[...]: error LGHT0204 : ICE03: Table: Registry Column: …
Run Code Online (Sandbox Code Playgroud)

installer windows-installer wix merge-module

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

C#(.Net 2.0)微优化第2部分:在网格中查找连续组

我有一个非常简单的函数,它接受匹配的位域,网格和正方形.它过去常常使用委托,但我做了大量的重新编码,最后进行了一个位域&操作,以避免委托,同时仍能在合理范围内执行匹配.基本上,挑战是match从特定的"前导"方块开始,在网格中找到与位域匹配的所有连续元素.Square有点小(但不是很小).关于如何推动这个更快的任何提示?请注意,网格本身非常小(此测试中有500个元素).

编辑:值得注意的是,此函数每秒调用超过200,000次.事实上,从长远来看,我的目标是不经常调用它,但这真的很难,因为我的最终目标是使用脚本处理分组系统而不是硬编码.也就是说,这个函数总是被称为比任何其他函数更多.

编辑:为了澄清,该功能不会检查是否leader匹配位域,按设计.目的是领导者不需要匹配位域(尽管在某些情况下它会).

事情尝试失败:

  • 使用容量初始化字典和堆栈.
  • 将int转换为枚举以避免强制转换.
  • 将字典和堆栈移到函数外部,并在每次需要时清除它们.这让事情变得更慢!

事情尝试成功:

  • 编写哈希码函数而不是使用默认值:哈希码是预先计算的并且等于x + y * parent.Width.感谢提醒,Jim Mischel.
  • mquander的技术:见GetGroupMquander下文.
  • 进一步优化:一旦我切换到HashSets,我摆脱了Contains测试并用测试替换它Add.双方ContainsAdd被迫寻求一个关键,所以只是检查,如果附加成功,是不是增加,如果更高效的Contains故障检查失败.那是,if (RetVal.Add(s)) curStack.Push(s);

    public static List<Square> GetGroup(int match, Model grid, Square leader)
    {
        Stack<Square> curStack = new Stack<Square>();
        Dictionary<Square, bool> Retval = new Dictionary<Square, bool>();
        curStack.Push(leader);
        while (curStack.Count != 0)
        {
            Square curItem = curStack.Pop();
            if (Retval.ContainsKey(curItem)) continue;
            Retval.Add(curItem, true);
            foreach (Square …
    Run Code Online (Sandbox Code Playgroud)

c# optimization .net-2.0

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

Asp.net Response.Write在ascx/aspx文件中

<%if (CanRemove) Response.Write("<b>"+ProductName+"</b>"); %>
Run Code Online (Sandbox Code Playgroud)

这段代码让我觉得很难看.更具体地说,每当我在ascx或aspx文件中看到对Response.Write的调用时,我都会怀疑我做错了什么.也许这是因为之前使用XSLT并注意到正确完成后,很少需要<xsl:text>元素来生成html.当我的html代码隐藏在<% %>块中时,我觉得它干扰了我读取代码的能力.

这是我需要习惯使用Asp.Net还是有更好的方法来做到这一点?

asp.net

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

DebuggerDisplayAttribute和DebuggerDisplay之间的区别

[DebuggerDisplayAttribute("{_name}")]
Run Code Online (Sandbox Code Playgroud)

VS

[DebuggerDisplay("{_name}")]
Run Code Online (Sandbox Code Playgroud)

有区别吗?一个是别人的别名吗?当使用名为foo的属性时,VS是否自动检查名为fooAttribute的类?

.net attributes

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

如何创建一个可以访问创建它的类成员的嵌套类?

我在C#.NET中编程.我想创建一个嵌套类,可以访问创建它的实例的成员,但我似乎无法弄清楚如何.

这就是我想要做的:

Car x = new Car()
x.color = "red";
x.Door frontDoor = new x.Door();
MessageBox.Show(frontDoor.GetColor());    // So I want the method GetColor of the class Front Door to be able to access the color field/property of the Car instance that created it.
Run Code Online (Sandbox Code Playgroud)

我该怎么做?我尝试将Door类嵌套在Car类中,但是它不能以这种方式访问​​Car类的成员.我是否需要让汽车继承门类或其他东西?

c# inheritance nested class abstract

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

使用WixUI_Minimal的Wix自定义操作

所以,我正在尝试,在应用程序完成安装后(虽然实际上,在运行辅助应用程序时无关紧要,因为它在安装期间不与安装的文件交互),运行另一个程序,这是与应用程序捆绑在一起.相关代码(用"..."替换各种内容:

<directory ...>
  <component ...>
  <File Id="IDINST" ... />
  </component>
</directory>
...
<CustomAction Id="IDACTION" FileKey="IDINST" ExeCommand="..." Return="ignore" />
...
<InstallExecuteSequence>
  <Custom Action="IDACTION" After="CostFinalize" />
</InstallExecuteSequence>
Run Code Online (Sandbox Code Playgroud)

我检查了目录,文件是我所期望的,但是在安装过程之后没有执行.事实上,我甚至不想要安装该文件,只需运行然后删除.但我暂时不理睬这一点.无论如何,我已经看过几个在对话之后触发动作的例子但是因为我现在正在使用<UIRef Id="WixUI_Minimal" />我不认为这是理想的.

installer windows-installer custom-action wix

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

请向vb-er解释C#语法

我有以下代码片段:

        // Notify the source (the other control).
        if (operation != DropOperation.Reorder) {
            e = new DroppedEventArgs()
            {
                Operation = operation == DropOperation.MoveToHere ? DropOperation.MoveFromHere : DropOperation.CopyFromHere,
                Source = src,
                Target = this,
                DroppedItems = srcItems
            };
            src.OnDropped(e);
        }
Run Code Online (Sandbox Code Playgroud)

我不明白这
Operation = operation == DropOperation.MoveToHere ? DropOperation.MoveFromHere : DropOperation.CopyFromHere条线.

有人可以解释一下吗?记录...... dropOperation是一个枚举.你能给我vb语法等价物吗?

赛斯

c# vb.net syntax ternary-operator

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

快速,原子表更换

我有一个相当简单的命令,我偶尔会运行:

BEGIN TRAN T1;
truncate table mytable
insert into mytable select name from myview
COMMIT TRAN T1;
Run Code Online (Sandbox Code Playgroud)

这个命令有两个丑陋的副作用:首先,在mytable上选择请求经常超时.其次,在mytable上选择请求有时不会返回任何结果.我不在乎它是否返回事务前结果或事后结果,但不希望它返回中间的任何内容,或者超时.我想到的一个解决方案,几乎肯定会有所帮助,首先将视图复制到临时表中(因为视图有点贵).这不能完全解决问题,但它几乎肯定会使窗口缩小到足以使问题被忽略.坦率地说,窗口很窄,现在可以忽略它,但我不喜欢忽略它.另一个解决方案,即疯狂的过度工程的一个例子,将用两个表(例如双缓冲区)替换表,并调用最新的,正确填充的表.

是否有更优雅的方式用新的表替换表?

sql-server-2005

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

在部署时将类保存到磁盘:我的代码是否有错误?

我正在尝试创建一个简单的类,它在不再使用时将自身序列化为磁盘.我现在的代码(见下文).我现在的代码似乎有用,但我对自己的知识并不完全自信,所以我想知道是否有其他人看到这个代码有任何重大问题.

void IDisposable.Dispose()
{
    Dispose(true);
    GC.SuppressFinalize(this);
}

~MyClass()
{
    Dispose(false);
}

protected virtual void Dispose(bool disposing)
{
    if (!this.disposed)
    {
        MemoryStream ms = new MemoryStream();
        BinaryFormatter bf = new BinaryFormatter();
        bf.Serialize(ms, this);
        byte[] output = Dostuff(ms);
        File.WriteAllBytes(DBPATH, output);
    }
    this.disposed = true;
}
Run Code Online (Sandbox Code Playgroud)

c# destructor idisposable

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

我如何捕获CS7036错误

所以我对C#很新,我一直在学习将我的代码从python转换为C#.现在我偶然发现的问题是:我如何捕获CS7036错误.它在python中被称为"AttributeError",如果你试图实例化一个类而没有所需数量的参数,它就会发生.

public Vector Crossproduct(Vector other)
{
    try
    {
        List<double> output = new List<double>()
        {
            Y* other.Z - other.Y * Z,0 - (X * other.Z- other.X * Z),X* other.Y - other.X * Y
        };
        Vector outputvector = new Vector(output);
        return outputvector;
    }
    catch (Exception)
    {

        throw;
    }
}
Run Code Online (Sandbox Code Playgroud)

我用Google搜索了这一点,发现此错误几乎没有任何内容.这是Microsoft的C#文档的链接.这里这里.

我的问题不是如何修复错误,而是如何捕获它,只是让我很清楚.

javascript c#

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