如果您只知道文件的旧名称,有没有办法获取文件的版本历史记录?
我目前正在查看我们的存储库的旧副本(我不知道确切的日期,副本已被拍摄).当我将它与当前存储库进行比较时,有一个文件只存在于副本中,但不存在于当前存储库中.它尚未在存储库中删除.我想,它已被移动或重命名.在TFS中是否有任何方法可以使用旧路径和名称查找版本历史记录?
我知道我可以使用名称或一些代码片段来挖掘.但IMO在使用存储库时这不是一个可接受的解决方案:)
非常感谢你
安德烈亚斯
我的sql-server上没有简单的布尔代数.根据msdn,以下语句应返回"1",但在我的服务器上它返回"0".你能帮助我吗?
SET ANSI_NULLS ON
SELECT CASE WHEN NOT(1=NULL) THEN 1 ELSE 0 END
Run Code Online (Sandbox Code Playgroud)
请看看msdn.它明确指出:"将NULL与非NULL值进行比较总是导致FALSE." - 无论ANSI_NULLS设置是什么.因此,"1 = NULL"应为FALSE,因此NOT(FALSE)应为TRUE,语句应返回"1".
但在我的机器上,它返回"0"!
一种解释可能是,"1 = NULL"评估为"UNKNOWN".NOT(UNKNOWN)仍然是UNKNOWN(msdn),它会强制CASE语句进入ELSE.
但是,等于运营商的官方文件是错误的.我无法相信这!
任何人都可以解释这种行为吗?
非常感谢您的帮助!
编辑(2012-03-15):
我发现的一件事可能对你们中的一些人感兴趣:
CREATE TABLE #FooTest (Value INT)
ALTER TABLE #FooTest WITH CHECK ADD CONSTRAINT ccFooTestValue CHECK (Value>1)
PRINT '(NULL>1) = ' + CASE WHEN NULL>1 THEN 'True' ELSE 'False' END
INSERT INTO #FooTest (Value) VALUES (NULL)
Run Code Online (Sandbox Code Playgroud)
print-Statement写入'False',但插入运行没有错误.SQL-Server似乎否定了检查约束,以便搜索不满足约束检查的行:
IF EXISTS (SELECT * FROM inserted WHERE NOT(Value>NULL)) <Generate error>
Run Code Online (Sandbox Code Playgroud)
由于check-constraint的计算结果为UNKNOWN,因此否定也是UNKNOWN,并且SqlServer没有找到任何违反check-constraint的行.
是否可以让 .NET 创建以下输出?
DateTime.UtcNow.ToString() --> "2017-11-07T00:40:00.123456Z"
Run Code Online (Sandbox Code Playgroud)
当然,总有可能使用 ToString("s") 或 ToString("yyyy-MM-ddTHH:mm:ss.fffffffK")。但是有没有办法将无参数 ToString-Method 的默认行为调整为所需的输出?
我尝试更改 CurrentCulture。但我得到的最好的是“2017-11-07 00:40:00.123456Z”。我没有找到将日期和时间之间的分隔符从空格更改为“T”的方法。
每当我们需要高十进制精度时,我们使用小数来进行计算.有没有办法检查精度是否足以进行计算?
我想使以下代码抛出异常:
decimal almostMax = Decimal.MaxValue - 1;
decimal x = almostMax + 0.1m; // This should create an exception, since x equals almostMax.
Assert.AreEqual(x, almostMax); // This does NOT fail.
Run Code Online (Sandbox Code Playgroud)
它在实际代码中并不重要,但保证安全是件好事.
我目前想知道,为什么ESLint不在我的Visual Studio 2017项目中工作.项目根目录中有文件".eslintrc":
{
"extends": "defaults/configurations/eslint",
"env": {
"browser": true
},
"globals": {
"xhr": true
},
"rules": {
"eqeqeq": [ "error", "always", { "null": "ignore" } ]
}
}
Run Code Online (Sandbox Code Playgroud)
如果我用"eqeqeq"删除该行,一切正常.但是只要我添加这一行,就不会显示任何错误.
问题1:有没有办法看到有关ESLint显然存在的问题的错误消息?
问题2作为后备:这条线的问题是什么?
我正在努力使用 http 请求检索大约 10 种不同类型的数据,它们之间的依赖关系相当复杂。我正在尝试以一种优雅、可读和可维护的方式找到解决这个问题的方法,而无需不必要的等待。
让我们假设,某种方法创建了一个Dictionary<string, Task<int>>. 将其转换为最优雅的方式是什么Task<Dictionary<string, int>>?
Task一旦字典中包含的所有任务完成,新的外部就应该完成。
当然,我可以手动编写:
Dictionary<string, Task<int>> values = GetValues();
Task<Dictionary<string, int>> result = Task.Run(async () => {
Dictionary<string, int> rewrapped = new();
foreach (var entry in values) {
rewrapped.Add(entry.Key, await entry.Value);
}
return rewrapped;
});
Run Code Online (Sandbox Code Playgroud)
但难道就没有更好的办法吗?
我对类型的阴影可见性存在问题.我们假设以下代码:
namespace A {
class B {
int V1;
class A {
class B { }
void Foo() {
A.B b;
// "b" should be of the first type "B",
// but it actually points to A.B.A.B
b.V1 = 1; //Compile error
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
如何在声明"b"的地方声明类型"AB"的变量(其中"A"应该是命名空间,而不是嵌套的类"A")?
是否有任何优雅的方法来"冻结"从方法返回的操作中使用的变量?
只需看看以下代码:
static void Main(String[] args)
{
foreach(Action a in ClosureTrap("a", "b"))
{
a();
}
}
static List<Action> ClosureTrap(params String[] strings)
{
List<Action> result = new List<Action>();
foreach(String s in strings)
{
result.Add(() => Console.WriteLine(s));
}
return result;
}
Run Code Online (Sandbox Code Playgroud)
此代码将向控制台写入两行,两行都包含"b".其原因并不难找到:ClosureTrap中"s"的最后一个值是"b".
是否有任何优雅的方法可以在控制台上输出两行"a"和"b"作为输出?
目前我正在使用另一种方法来创建委托.但通过这样做,封闭件失去了很多优雅:
static List<Action> ClosureTrap(params String[] strings)
{
List<Action> result = new List<Action>();
foreach(String s in strings)
{
result.Add(Freeze(s));
}
return result;
}
static Action Freeze(String s)
{
return () => Console.WriteLine(s);
}
Run Code Online (Sandbox Code Playgroud)
有一个更好的方法吗?
DATETIME2(7)使用a 将值插入SQL Server 的类的适当方法是SqlCommand什么?
这是我尝试过的:
DateTime d = new DateTime(2000, 1, 1, 0, 0, 0).AddTicks(1111111);
using (SqlCommand cmd = conn.CreateCommand()) {
cmd.CommandText = "INSERT DtTest VALUES(@d)";
cmd.Parameters.AddWithValue("@d", d);
cmd.ExecuteNonQuery();
}
Run Code Online (Sandbox Code Playgroud)
但是当我检查数据库中的值时,我得到:
2000-01-01 00:00:00.1100000
Run Code Online (Sandbox Code Playgroud)
这是四舍五入到DATETIME精度的值.
我需要做些什么来获得包括最后五位数字的精确值?
c# ×7
sql-server ×2
ado.net ×1
ansi-nulls ×1
async-await ×1
asynchronous ×1
closures ×1
cultureinfo ×1
datetime ×1
decimal ×1
eslint ×1
precision ×1
t-sql ×1
tfs ×1
types ×1