小编Jon*_*ter的帖子

我应该如何使用Nuget进行内部企业开发?

我们使用Nuget进行内部开发,以便我们跨团队共享代码.然而,当一个人正在处理将同时跨多个nuget包部署的代码时,我们会遇到问题.例如

A取决于B,它取决于C.

A,B和C将他们的工件推送到Nuget,这就是我们如何管理A,B和C之间的依赖关系.我们发现的问题是,如果开发人员想要在C中进行更改并快速看到这些更改反映在A中,他们会必须经历以下过程.

  1. 在C中进行更改
  2. 将更改推送到git
  3. CI获取对C的更改并构建和部署新的nuget包.
  4. 进入B并使用nuget update package命令更新对C的引用.
  5. 将更改推送到packages.config文件,直到git
  6. CI获取B的更改,并为B构建和部署新的nuget包
  7. 现在打开A并更改对B和nuget更新包的引用
  8. 在A中进行更改以符合B中的更改(并且可传递C)

这似乎非常痛苦,并且导致我们的一些开发人员质疑我们内部开发的代码对Nuget的选择.每个人都喜欢使用外部包.

内部使用Nuget有更好的工作流程吗?

nuget

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

用于处理多种消息类型的设计模式

我已经把GOF放在我的桌子上了,我知道必须有某种设计模式来解决我遇到的问题,但是我无法弄明白.

为了简单起见,我改变了我正在使用的一些接口的名称.

所以这就是问题,在线路的一侧,我有多个服务器发送不同类型的消息.在电线的另一端,我有一个客户端,需要能够处理所有不同类型的消息.

所有消息都实现相同的公共接口IMessage.我的问题是,当客户端获得新的IMessage时,它如何知道它收到的IMessage类型?

我想我可以做类似下面的事情,但这只是感觉太糟糕了.

TradeMessage tMessage = newMessage as TradeMessage;
if (tMessage != null)
{
    ProcessTradeMessage(tMessage);
}

OrderMessage oMessage = newMessage as OrderMessage;
if (oMessage != null)
{
    ProcessOrderMessage(oMessage);
}
Run Code Online (Sandbox Code Playgroud)

第二个想法是向IMessage添加一个名为MessageTypeID的属性,但是这需要我写下面的内容,这也很糟糕.

TradeMessage tMessage = new TradeMessage();
if (newMessage.MessageTypeID == tMessage.MessageTypeID)
{
    tMessage = newMessage as TradeMessage;
    ProcessTradeMessage(tMessage); 
}

OrderMessage oMessage = new OrderMessage();
if (newMessage.MessageTypeID == oMessage.MessageTypeID)
{
    oMessage = newMessage as OrderMessage;
    ProcessOrderMessage(oMessage);
}
Run Code Online (Sandbox Code Playgroud)

我知道这个一般问题已被解决了一百万次,所以必须有一种更好的方法来解决一个方法,该方法将接口作为参数,但需要基于哪个类实现该接口的不同流控制.

c# design-patterns

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

如何减小sql server日志文件的大小?

所以我一直忽略了我的fogbugz数据库的任何备份,现在fogbugz ldf文件超过2次半的演出.这是在我们使用fogbugz的六个月里建立起来的.

我备份了数据库,然后我备份了,并截断了事务日志,但事务日志仍然是2个半的演出.我对日志文件进行了缩小,还有两次半的演出.我没做什么似乎缩小了文件的大小.

无论如何都有解决问题的方法吗?或者是回到这一点的唯一方法是分离数据库,删除日志文件,然后重新附加一个新文件?

sql sql-server

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

如何为log4net创建异步包装?

默认情况下,log4net是一种同步日志记录机制,我想知道是否有办法使用log4net进行异步日志记录?

c# log4net

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

如何向大型sql server表添加列

我有一个生产中有数百万行的SQL Server表,事实证明我需要为它添加一列.或者,为了更准确,我需要向表所代表的实体添加一个字段.

从语法上讲,这不是问题,如果表没有那么多行而且没有生产,这很容易.

我真正想要的是行动方案.有很多网站都有非常大的桌子,他们必须不时添加字段.如果没有大量的停机时间,他们怎么做?

我应该补充一点,我不希望列允许空值,这意味着我需要一个默认值.

所以我要么想弄清楚如何及时添加具有默认值的列,或者我需要找出一种方法以便稍后更新列,然后将列设置为不允许空值.

sql t-sql sql-server

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

如何使用WPF Toolkit Datagrid更改单元格的背景颜色

我正在使用WPF工具包datagrid,我想根据单元格的内容设置单元格的背景颜色,而不是行.

为了简单起见,我们假设列被称为Foo,我希望当Foo为1时,单元格的背景为蓝色,Foo为2时为红色,Foo为3时为黄色,Foo为3时为绿色.

如果我能做到这一点,我很确定我能解决任何需要处理的更复杂的案例.

wpf datagrid background wpftoolkit

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

使用C#中的正则表达式从完整路径解析文件名

如何使用C#中的正则表达式从完整路径中提取文件名?

说我有完整的路径C:\CoolDirectory\CoolSubdirectory\CoolFile.txt.

如何使用正则表达式的.NET风格获取CoolFile.txt?我对正则表达式并不是很好,而且我的RegEx伙伴和我无法想出这个.

此外,在尝试解决这个问题的过程中,我意识到我可以使用 System.IO.Path.GetFileName,但事实上我无法弄清楚正则表达式只是让我不开心,它会打扰我,直到我知道答案是什么是.

.net c# regex

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

是否可以连接表值函数和另一个带参数的表

有兴趣的人的快速背景,

我有一个主详细信息表(选项日期),每个主记录大约有20个详细信息.我们保存数据的oltp系统为我们保存的每条新信息做了21次插入.这是杀死服务器,所以我试图通过用逗号分隔值代替详细信息表来实现这一点.一切似乎都在起作用,除了我可以弄清楚如何获取细节表.我正在尝试使用表值函数,但它并不是很有效.

我想打个电话

Select Top 100 *
FROM dbo.fn_MarketDataDetails (MarketDataMasterID) mdd
INNER JOIN MarketDataMaster mdm on mdm.MarketDataMasterID = mdd.MarketDataMasterID
Run Code Online (Sandbox Code Playgroud)

显然,这只是不编译.

我可以跑

Select Top 100 *
FROM dbo.fn_MarketDataDetails (15425) // Assuming 15425 is a valid MarketDataMasterID
Run Code Online (Sandbox Code Playgroud)

然后我找回了一张看起来像旧细节表的桌子.

这甚至可能吗?我有意义吗?

sql-server-2005

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

为什么WinDBG找不到mscordacwks.dll?

我正在尝试使用WinDBG来分析我们的一台生产机器的崩溃转储.我的问题的根源似乎是我有一个不同于生产机器的.NET框架版本,只是我不知道如何解决问题.当我转!sym吵闹然后运行!dlk(来自SOSEX)我得到以下错误,因为它试图找到mscordacwks dll

0:000> !dlk
CLRDLL: c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\mscordacwks.dll:2.0.50727.3623 f:0
doesn't match desired version 2.0.50727.3607 f:0
SYMSRV:  c:\mysymbols\mscordacwks_x86_x86_2.0.50727.3607.dll\4ADD5446590000\mscordacwks_x86_x86_2.0.50727.3607.dll not found
SYMSRV:  http://msdl.microsoft.com/download/symbols/mscordacwks_x86_x86_2.0.50727.3607.dll/4ADD5446590000/mscordacwks_x86_x86_2.0.50727.3607.dll not found
SYMSRV:  c:\mysymbols\mscordacwks_x86_x86_2.0.50727.3607.dll\4ADD5446590000\mscordacwks_x86_x86_2.0.50727.3607.dll not found
SYMSRV:  c:\mysymbols\mscordacwks_x86_x86_2.0.50727.3607.dll\4ADD5446590000\mscordacwks_x86_x86_2.0.50727.3607.dll not found
SYMSRV:  http://msdl.microsoft.com/download/symbols/mscordacwks_x86_x86_2.0.50727.3607.dll/4ADD5446590000/mscordacwks_x86_x86_2.0.50727.3607.dll not found
SYMSRV:  c:\mysymbols\mscordacwks_x86_x86_2.0.50727.3607.dll\4ADD5446590000\mscordacwks_x86_x86_2.0.50727.3607.dll not found
CLRDLL: Unable to find mscordacwks_x86_x86_2.0.50727.3607.dll by mscorwks search
CLRDLL: Unable to find 'mscordacwks_x86_x86_2.0.50727.3607.dll' on the path
SYMSRV:  c:\mysymbols\mscorwks.dll\4ADD5446590000\mscorwks.dll not found
SYMSRV:  http://msdl.microsoft.com/download/symbols/mscorwks.dll/4ADD5446590000/mscorwks.dll not found
SYMSRV:  c:\mysymbols\mscorwks.dll\4ADD5446590000\mscorwks.dll not found
DBGHELP: C:\Program Files\Debugging Tools for Windows (x86)\mscorwks.dll - file not found
SYMSRV:  c:\mysymbols\mscorwks.dll\4ADD5446590000\mscorwks.dll not found …
Run Code Online (Sandbox Code Playgroud)

windbg sos debugdiag

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

VS2010 Premium是否值得这个价格?

我知道这有点主观,但我无法在任何地方找到诚实的答案.关于VS2010的一切都是微软的营销材料.

我们的小组将升级到VS2010(主要用于F#和新的线程功能),但我们无法在专业版和高级版之间做出决定.高级声音的集成测试功能很好,但我可以弄清楚它们是否值得两个版本之间成本增加10倍(专业版是~549,高级版是~5400).

有没有人面临过类似的决定?是什么让你这样或那样摇摆?

visual-studio-2010

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