小编Ste*_*e B的帖子

MS Word可扩展性:VBA宏与.Net VSTO?

我的一位客户要求我们开发一个"VBA宏".然而,在2010年代,我仍然使用这种过时的语言似乎很奇怪,我正在考虑试图说服客户使用VSTO dev.但是,由于我是两个世界的新手,我需要帮助填写赞成/反对页面才能辩论这一点.

当然,答案不能没有实际要求,让我试着恢复:

目标:Word 2003/2007(但我怀疑2010年是一个尚未知的要求)编辑 2010年要求已确认

外部发布系统需要.doc文件作为输入.的.DOC文件必须应用的一些具体形式:"自定义首部1","自定义首部2"等

用户可以使用Word以两种可能的方式构建文档:

  1. 使用部署在计算机上的.dot文件启动新文档
  2. 转换任何现有文档以匹配目标模板

用户可以"简单地"(简单UI)"应用"样式:上下文菜单,样式菜单,自定义操作窗格等.

到现在为止,我看到以下优点/缺点:

  1. VBA

    • 优点:
      • 快速而肮脏的发展(句子的快速部分)
      • 客户已经有一些生产宏
    • 缺点:
      • 很难找到熟练的开发人员
      • 快速和肮脏的发展(句子的脏部分)
  2. VSTO

    • 优点:
      • .Net语言的好处(编译,打字,严谨,类库等)
      • 安全模型更灵活,更强大(信任代码与受信任的机构签署)
      • 可以连接到WPF窗格
      • 您在Visual Studio中工作并可以访问其全部功能:重构,源代码控制等.
    • 缺点:
      • 需要安装.Net框架(今天可能不是问题)和VSTO运行时
      • 更难部署
      • 一开始稍微多一些工作(但长期工作量较少)

vba vsto ms-office

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

重构C#自动属性到字段和getter/setter属性?

我有一堆业务类与autoproperties:

public class A {

    public int Id { get; set; }
    public string Title { get; set;}

}
Run Code Online (Sandbox Code Playgroud)

由于应用程序不断发展,因此需要启用跟踪属性更改的新要求,以便仅向后备存储库发送已更改的数据.

为了达到这个目标,我必须将所有属性转换为字段+属性,如下所示:

public class A {

    private int m_Id;
    public int Id {
        get { return m_Id; }
        set {
            if(m_Id != value){
                SetChanged("Id");
                m_Id = value;
            }
        }
    }
    private string m_Title;
    public string Title 
    { 
        get { return m_Title; }
        set {
            if(m_Title != value){
                SetChanged("Title");
                m_Title = value;
            }
        }
    }

    protecte void SetChanged(string propertyName) { 
        // Not …
Run Code Online (Sandbox Code Playgroud)

c# refactoring

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

重载asp.net MVC + Web API应用和异步消息总线的设计注意事项

我计划构建一个相当大的应用程序(在并发用户/请求数量方面很大,而不是在功能方面)。

基本上,我将在某处提供服务,即等待命令执行它们,并在稍后确认完成。在发出确认消息之前,此服务将使用服务总线进行通信,从而使执行成为最终结果。

此服务的使用者可以是任何类型的应用程序(WPF、SL、...),但我的主要(也是第一个)客户端将是一个 asp.net MVC 应用程序 + WebApi (.Net 4.5) 或 MVC only (.Net 4.0) ) 与 ajax 控制器操作。

Web 应用程序将依靠 Ajax 调用来保持用户友好的响应式应用程序。

我对这种成熟的异步架构还很陌生,我有一些问题可以避免将来的头痛:

  • 我的 web api 调用可能需要一些时间。我应该如何正确设计 api 以支持长时间运行的操作(某种异步?)。我已经阅读了新的 async 关键字,但为了知识起见,我想了解背后的内容。
  • 我对服务的调用将包括发布一条消息并等待确认消息。如果我将它包装在一个方法中,我应该如何编写这个方法?我应该“阻止”直到收到确认(我想我不应该)?我应该返回一个 Task 对象并让消费者决定吗?
  • 我也想知道 SignalR 是否可以帮助我。使用signalR,我想我可以使用真正的“即发即弃”命令发出,并路由到客户端以确认消息。
  • 我是不是完全跑题了,我应该采取另一种方法吗?

在实现细节/框架方面,我想我会使用:

  • Rabbitmq 作为消息系统
  • Masstransit 抽象消息系统
  • asp.MVC 4 构建 UI
  • Webapi 隔离从 UI 控制器发出的命令,并允许其他类型的客户端发出命令

asp.net-mvc asynchronous signalr message-bus asp.net-web-api

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

"复合"变量类型的正确实现是什么?

我有一个程序,必须使用复合键管理对象.这个关键,简单就是几个字符串.

我有以下代码:

public struct MyKey
{
    public string Part1 { get; set;} // always set
    public string Part2 { get; set;} // can be null
    public MyKey(string part1, string part2) : this()
    {
        this.Part1 = part1;
        this.Part2 = part2;
    }
}
Run Code Online (Sandbox Code Playgroud)

这对于存储我的值是可以的.

现在我希望能够:

  • 使用equals运算符(part1和part2是等于)
  • 使用Dictionnary中的键,尤其是使用Contains方法

我猜测了很多事情(覆盖等于运算符,重写GetHashCode和Equals方法,实现IComparable等),但我不确定实现目标的必要步骤是什么,以及什么会导致开销.

thx提前

c# variables c#-4.0

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

如何检查列表中是否存在值?

我对C#编程比较陌生(实际上是整个编程),但是我已经构建了一个应用程序来管理我工作的团队使用的服务器上的应用程序池.它完成了它应该做得很好的一切,但我遇到的唯一问题是将以前使用的配置保存到app.config文件中,这样用户就不必每次都手动将它们放入.就目前而言,我可以保存并从文件中加载(以及每组中我需要的所有字符串).

问题是我想在进行粗略检查之前查看组中是否存在Name字符串.app.config部分的示例:

<appSettings>
 <add Name="RowName" MachineName="MS-02348" AppSrvName="AppServer" WebSrvName="AppNet"/>
 <add Name="RowName2" MachineName="MS-68186" AppSrvName="AppServer2" WebSrvName="AppNet2"/>
</appSettings>
Run Code Online (Sandbox Code Playgroud)

所以我目前正在做的加载值的方法是我有一个方法来检索appSettings/add节点并将它们抛出到列表中,然后将值设置为对象的属性.我这样做的原因是我可以有一个仅列出对象名称的下拉列表,然后当我在所选项目上调用方法时,其余信息都可用.

无论如何,我现在遇到的是我想确保如果名称已经存在于app.config中,我会提示用户写另一个名称而不是将其保存到数据库中.拥有两个具有相同"Name"值的子节点会对我的逻辑造成严重破坏.

我试过一个foreach循环遍历列表中的对象,但是不知道有多少个对象,我不知道一个简单的方法,它真的说它确实存在或不存在.我也尝试根据节点中列出的值来定位子节点,但似乎也失败了.我猜这部分是语法,但它似乎与方法列表定义它的方式相匹配.

有什么想法吗?

c# xml

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

在SharePoint 2010服务器场中重命名Sharepoint Central管理员计算机名称

这可能是提出这个问题的错误地方.我花了很多精力设置thr sharepoint 2010 2层农场.我已经安装了sharepoint所需的sql server数据库,安装在不同的机器上.和另一台机器上的sharepoint.它花了大约6天,但最后我注意到我的计算机名称有"win43453-676"这样的东西.我的经理想要保持中央管理员PC的"CentralAdminMachine"的相关名称.如果我改变了机器的名称,我甚至无法打开中央管理站点.在配置数据库和所有....更改此名称是否有任何补救措施?

sharepoint-2010

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

在MVC控制器中加载XML

我试图在"HomeController"中加载MVC中的XML文档

我希望这个文档加载到/ Home /目录下的所有内容,所以我的类:

public HomeController()
        {  }
Run Code Online (Sandbox Code Playgroud)

在这里我有我想要连接到XML的代码:

//Now set up the config xml read
        XmlDocument xmldoc = new XmlDocument();
        xmldoc.Load(HttpContext.Server.MapPath("~/Content/settings.xml"));
        XmlNodeList settings = xmldoc.SelectNodes("/settings");
        XmlNodeList defaults = xmldoc.GetElementsByTagName("default");
        foreach (XmlNode node in defaults)
        {
            string def_WebPageName = node["WebPageName "].InnerText;
        }
Run Code Online (Sandbox Code Playgroud)

XML的结构:

<settings>
<defaults>
  <WebPageName>blah</WebPageName>
</defaults>
Run Code Online (Sandbox Code Playgroud)

我似乎无法找到XML文件,不断收到"对象设置为空引用"错误

c# xml asp.net-mvc razor

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

边缘顶部设置的嵌套div导致滚动条出现

假设我有这个小HTML片段:

<div id="outer">
    <div id="inner">
        <div id="inner2">foo bar</div>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

我也定义了这些样式:

#outer {
    height:100px;
    overflow:auto;
    background-color:#EEE;
}
#inner {
    height:100px;
    background-color:#AAA;
}
#inner2 {
    margin-top:5px;
}
Run Code Online (Sandbox Code Playgroud)

使用此设置,滚动条显示outerdiv:

样本结果

为什么嵌套的内部div会导致出现此滚动条?

我可以通过删除margin-top规则删除滚动条,但这会导致副作用.

这是一个重现问题的jsfiddle:http://jsfiddle.net/stevebeauge/PTA85/

[编辑]:我的实际问题通过替换margin-top来解决padding-top,但我正在寻找解释,而不仅仅是解决方案.

css

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

保留哈希表顺序

假设我有这个脚本:

$data= @{
    A = 1
    C = 2
    B = 3
}

foreach($key in $data.Keys){
    $item = $data[$key]
    Write-Host "$($key) : $($item)"
}
Run Code Online (Sandbox Code Playgroud)

输出是:

C : 2
B : 3
A : 1
Run Code Online (Sandbox Code Playgroud)

如您所见,输出与输入的顺序不同.

有没有办法保存我的字典中的顺序?

我的实际要求是按字典中提供的顺序执行一组命令.

作为旁注,我可以使用以下方法解决:

$data= @(
  @{ Name="A"; Value=1  }
  @{ Name="C"; Value=2  }
  @{ Name="B"; Value=3  }
)

foreach($item in $data){
    Write-Host "$($item.Name) : $($item.Value)"
}
Run Code Online (Sandbox Code Playgroud)

但语法有点复杂

powershell

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

在 pnpm 工作区中,如何使用公共包的分支的本地副本

我正在使用 pnpm 及其工作区功能来构建多个应用程序,这些应用程序共享私有库中的一些代码。

除了私有依赖项之外,我还引用了 npm 注册表中的一堆公共包。

这工作正常。

然而,公共参考有时会遇到一些错误,我想帮助解决。这需要在最终提交 PR 之前对项目进行分叉。

Pnpm 允许声明对 git 项目的依赖关系,但如何引用分叉库的本地克隆?

我想避免将任何代码推送到分叉项目,除非它已经在本地进行了测试。

因为我在 pnpm 工作区中工作,所以工作区本身就是一个完整的 git 存储库,这不允许我在工作区中使用 fork

git node.js pnpm

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