我们使用批处理文件生成代码,它会自动从Team Foundation Server(TFS)中检出生成的文件,以便它可以重新生成它们.这些文件中的大多数都没有被修改,但生成器并不提前知道.
"tfs undo"命令撤消签出,但会提示是否已修改某些(我们不想这样做).我们也不想立即签入生成的文件.
是否有命令(或一系列命令)撤消所有未修改文件的检出而不提示用户?
我们正在使用log4net并希望在外部配置文件中指定它的配置(正如我们对其他部分所做的那样).为此,我们将App.config中的log4net部分更改为:
...
<section name="log4net"
type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
...
<log4net configSource="Log.config" />
...
Run Code Online (Sandbox Code Playgroud)
在Log.Config文件(与App.config相同的目录)中,我们有:
<log4net>
<appender name="General" type="log4net.Appender.FileAppender">
<file value="myapp.log" />
<layout type="log4net.Layout.SimpleLayout" />
</appender>
<root>
<appender-ref ref="General" />
</root>
</log4net>
Run Code Online (Sandbox Code Playgroud)
但是,当我们运行应用程序时,不会创建任何日志文件(并且没有完成日志记录).没有错误消息输出到控制台.
如果我们将Log.config文件的内容移回App.config(替换上面的第一个代码行),它将按预期工作.知道为什么它不在外部文件中工作吗?
为什么以下代码有时会导致内容为"CLIPBRD_E_CANT_OPEN"的异常:
Clipboard.SetText(str);
Run Code Online (Sandbox Code Playgroud)
这通常发生在第一次在应用程序中使用剪贴板而不是之后.
是否可以在加载程序集时运行某些代码,而无需在加载代码中执行任何特定操作?我正在寻找的就像一个类型的静态构造函数.
例如:
程序集A不知道程序集B,但B确实知道A.如果加载B,程序集A需要知道关于B的某些事情.当程序集B由运行时加载(引用或显式)时,我想要执行一段调用程序集A中的方法的代码(静态方法或属性).
此问题的根本原因是序列化A中的类型时遇到的未知类型,该类型包含B中的类型,这些类型在编译时未知,因为使用了接口.
我试图嵌套TransactionScopes(.net 4.0),就像在SQL Server中嵌套事务一样,但看起来它们的运行方式不同.我希望我的子事务能够在它们失败时回滚,但允许父事务决定是否提交/回滚整个操作.问题是当第一次完成时,事务被回滚.我意识到完全不同于提交.
我正在尝试做的一个非常简化的例子:
static void Main(string[] args)
{
using(var scope = new TransactionScope()) // Trn A
{
// Insert Data A
DoWork(true);
DoWork(false);
// Rollback or Commit
}
}
// This class is a few layers down
static void DoWork(bool fail)
{
using(var scope = new TransactionScope()) // Trn B
{
// Update Data A
if(!fail)
{
scope.Complete();
}
}
}
Run Code Online (Sandbox Code Playgroud)
我不能使用Suppress或RequiresNew选项,因为Trn B依赖于Trn A插入的数据.如果我确实使用这些选项,Trn B被Trn A阻止.
任何想法如何让它工作,或甚至可能使用System.Transactions命名空间?
谢谢
在TeamCity中,有一种简单的方法可以以MMdd格式获取当前日期的变量(例如08年8月8日)?
我的google-fu没有出现现有的插件.我考虑编写一个插件,但没有安装jdk,这看起来很耗时.
当我的数据绑定控件上发生事件(添加/编辑/删除)时,我收到以下错误.
无效的回发或回调参数.使用配置或页面中的<%@ Page EnableEventValidation ="true"%>启用事件验证.出于安全考虑,此功能可验证回发或回调事件的参数是否来自最初呈现它们的服务器控件.如果数据有效且符合预期,请使用ClientScriptManager.RegisterForEventValidation方法注册回发或回调数据以进行验证.
我正在使用自定义DataList控件,但GridView,DetailsView,FormView和Repeater控件(以及可能与其他数据绑定控件)也会出现此问题.
我能找到的答案告诉我在配置文件或页面中关闭验证,但这听起来并不像是最好的解决方案.我究竟做错了什么?
如何使用PowerShell脚本在IIS 6.0上创建应用程序池?
这是我到目前为止所提出的......
$appPool = [wmiclass] "root\MicrosoftIISv2:IIsApplicationPool"
Run Code Online (Sandbox Code Playgroud)
谢谢
我想知道是否有更好/内置的方式,除了使用字节缓冲区和循环,从一个流读取并将其写入另一个流(在.NET中).通常,这样做是为了将变换应用于流并将其移动.
在这个例子中,我正在加载一个文件,通过一个deflate流并将其写入文件(为简单起见,删除了错误处理):
byte[] buffer = new byte[10000000];
using (FileStream fsin = new FileStream(filename, FileMode.Open))
{
using (FileStream fsout = new FileStream(zipfilename, FileMode.CreateNew))
{
using (DeflateStream ds = new DeflateStream(fsout, CompressionMode.Compress))
{
int read = 0;
do
{
read = fsin.Read(buffer, 0, buffer.Length);
ds.Write(buffer, 0, read);
}
while (read > 0);
}
}
}
buffer = null;
Run Code Online (Sandbox Code Playgroud)
编辑:
.NET 4.0现在有一个Stream.CopyTo函数,Hallelujah