我试图在同一解决方案的分支之间执行复杂的合并.我们使用Team Foundation Server,但我更喜欢在WinMerge本地比较文件夹,而不是直接依赖TFS告诉我改变了什么.问题是,有很多文件没有在源代码控制中污染WinMerge文件夹比较:bin,obj,静态代码分析文件,本地创建但丢弃但永不删除的剩余项目......
我可以删除本地文件夹并强制从源代码控制获取以清除它,但是我通过慢速VPN连接到源代码控制,它可能需要一段时间; 或者我也可以手动删除我认为重复的任何文件,但这太经验而不是详尽无遗.
所以这是我的问题:是否有任何tfs命令来清理本地文件夹?
我有一个SQL Server存储过程,它重新解决这个问题:
CREATE PROCEDURE [jp].[GetFoo]
@Guid UNIQUEIDENTIFIER
AS
SELECT
CONVERT(BIT, (CASE WHEN [dbo].[GetBar](T.Col2) = 3 THEN 1 ELSE 0 END)) IsGetBarCol2EqualToThree
FROM
[dbo].[MyTable] T
WHERE
T.Col1 = @Guid
Run Code Online (Sandbox Code Playgroud)
当我在EF中执行函数导入/获取列信息时,IsGetBarCol2EqualToThree列的推断类型是Nullable<bool>
.但是这个领域不可能是空的,所以我希望它是公正的bool
.有没有办法在更新时保持持久性(即不依赖于修改任何生成的代码)?
SQL Server版本是2005,我使用Visual Studio 2010SP1和EF 4,项目是针对.net 4.0编译的.
AWS 文档一致指出,不应根据名称或 URL 以编程方式构建 ARN,因为不能保证这些字符串的构建方式在时间上保持不变。
我的问题是,在 SQS 上,GetQueueAttributes返回的 RedrivePolicy 属性仅引用 ARN 的死信队列。
我目前正在编写一个服务来创建队列并设置它们,或者验证它们的设置是否正确(如果它们已经存在)。但是我看不到验证死信队列 ARN 是否与现有队列匹配的方法,除非我确实解析它以获取名称。有没有办法解决这个问题?
(实际上,公平地说,有一种方法可以遵守“不以编程方式解析 ARN”规则,即调用ListQueues然后循环遍历结果 URL,在每个URL 上调用GetQueueAttributes,但这听起来很愚蠢,并且如果帐户上的队列超过 1000 个,则可能会失败,所以我不这样做)。
目前正在寻找 C# 中的解决方案,但该问题与语言无关。
我正在实现我自己的可枚举类型.重新安排的东西:
public class LineReaderEnumerable : IEnumerable<string>, IDisposable
{
private readonly LineEnumerator enumerator;
public LineReaderEnumerable(FileStream fileStream)
{
enumerator = new LineEnumerator(new StreamReader(fileStream, Encoding.Default));
}
public IEnumerator<string> GetEnumerator()
{
return enumerator;
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
public void Dispose()
{
enumerator.Dispose();
}
}
Run Code Online (Sandbox Code Playgroud)
枚举器类:
public class LineEnumerator : IEnumerator<string>
{
private readonly StreamReader reader;
private string current;
public LineEnumerator(StreamReader reader)
{
this.reader = reader;
}
public void Dispose()
{
reader.Dispose();
}
public bool MoveNext()
{
if (reader.EndOfStream)
{
return false; …
Run Code Online (Sandbox Code Playgroud) 我正在尝试在 PowerShell ISE 中调试脚本,但我遇到了一个问题,其中一行的正常输出被 ISE 解释为错误
我已经能够简化这个问题的重现:我在https://www.openssl.org/related/binaries.html获得了任何版本的 openssl (我用 1.0.2d x86 来自链接存储库http:/ /slproweb.com/products/Win32OpenSSL.html )
我打开 Powershell ISE,导航到 exe 所在的位置并运行以下命令:
$ErrorActionPreference = "Stop"
$env:OPENSSL_CONF = ((Resolve-Path "openssl.cfg").Path)
&openssl.exe genrsa
Run Code Online (Sandbox Code Playgroud)
输出是红色的,开始是这样的:
openssl.exe : Loading 'screen' into random state - done
At line:1 char:1
+ &C:\Trayport\OpenSsl\openssl.exe genrsa
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (Loading 'screen...om state - done:String) [], RemoteException
+ FullyQualifiedErrorId : NativeCommandError
Generating RSA private key, 2048 bit long modulus
Run Code Online (Sandbox Code Playgroud)
如果我在正常的 PowerShell 命令窗口中运行它,输出相同但为白色,不会被视为错误
Loading 'screen' into random state …
Run Code Online (Sandbox Code Playgroud) powershell openssl powershell-ise powershell-3.0 powershell-4.0
据我所知,PowerShell 存储库是 NuGet 存储库...
GitHub 刚刚发布了他们的包注册表,我的公司目前将其用于 npm,但也有一个用于 NuGet 的端点。
我可以使用我的 GitHub 凭据访问 NuGet 端点 ( https://nuget.pkg.github.com/mycompany/index.json ),它返回一个有效的 json:
{
"version": "3.0.0-beta.1",
"resources": [
{
"@id": "https://nuget.pkg.github.com/mycompany/download",
"@type": "PackageBaseAddress/3.0.0",
"comment": "Get package content (.nupkg)."
},
{
"@id": "https://nuget.pkg.github.com/mycompany/query",
"@type": "SearchQueryService",
"comment": "Filter and search for packages by keyword."
},
{
"@id": "https://nuget.pkg.github.com/mycompany/query",
"@type": "SearchQueryService/3.0.0-beta",
"comment": "Filter and search for packages by keyword."
},
{
"@id": "https://nuget.pkg.github.com/mycompany/query",
"@type": "SearchQueryService/3.0.0-rc",
"comment": "Filter and search for packages by keyword."
}, …
Run Code Online (Sandbox Code Playgroud) 我正在尝试实现托管服务,我想知道我应该在通话中使用 CancellationToken 做什么IHostedService.StartAsync
。
Microsoft 文档中有很多关于取消令牌本质上StopAsync
是超时(默认情况下 5 秒)的内容,这意味着应该在合理的时间范围内正常关闭。
但关于 中的 token StartAsync
,信息并不多。如果有的话,文档指定实现不应等待长时间运行的初始化进程,而应仅返回长时间运行的任务。因此,如果我支持取消,我是否应该将取消令牌传递给创建该长时间运行任务的任何内容?如果是的话,取消这个令牌不是一个愚蠢的版本吗StopAsync
?为什么框架会这样做?
事实上,在微软自己的抽象BackgroundService中,实现StartAsync
实际上完全忽略了该令牌并创建了一个新的令牌,该令牌将在调用时被取消StopAsync
......
那么我是否认为框架传递的初始令牌的全部意义实际上是通过覆盖虚拟方法来用于阻止
初始化过程(尽管文档建议反对它)BackgroundService.StartAsync
?例如
public class MyBackgroundService : BackgroundService
{
public override Task StartAsync(CancellationToken cancellationToken)
{
// Block the thread for initialisation with cancellation (replace Task.Delay by actual initialisation)
Task.Delay(TimeSpan.FromSeconds(10), cancellationToken).GetAwaiter().GetResult();
// Start the long running task proper
return base.StartAsync(cancellationToken);
}
protected override Task ExecuteAsync(CancellationToken stoppingToken)
{
// some long running …
Run Code Online (Sandbox Code Playgroud) 我已经使用了允许代码生成的 ReSharper 功能一段时间了。我一直这样做的方法是在我的班级中按 Alt-Enter(在任何方法之外),或按 Alt-Ins,然后选择Equality members,然后选择所有成员并单击确定。
这样做时会生成的代码是这样的:
public class Foo
{
public int Bar { get; }
public int Baz { get; }
protected bool Equals(Foo other)
{
return Bar == other.Bar
&& Baz == other.Baz;
}
public override bool Equals(object obj)
{
if (ReferenceEquals(null, obj)) return false;
if (ReferenceEquals(this, obj)) return true;
if (obj.GetType() != this.GetType()) return false;
return Equals((Foo) obj);
}
public override int GetHashCode()
{
unchecked
{
return (Bar * 397) ^ Baz;
}
} …
Run Code Online (Sandbox Code Playgroud) 我在我的应用程序中有这段html代码(之前定义了ng-app和ng-controller值):
<div>
<label for="projectSearchDateFrom"><%= Res("Projects.Search.From")%></label>
<input id="projectSearchDateFrom" type="text" ng-model="startDate" ui-date="dateOptions"/>
<img ng-show="hasStartDate()" ng-click="clearStartDate()" src="/_Layouts/ClientPortal/Images/layout/TA/delete-small.png" alt="<%= Res("ToolbarDialog.Clear")%> <%= Res("Projects.Search.From")%>" title="<%= Res("ToolbarDialog.Clear")%>" />
</div>
Run Code Online (Sandbox Code Playgroud)
我的AngularJS控制器看起来像这样:
function ProjectSearchCtrl($scope) {
$scope.startDate = '';
$scope.hasStartDate = function () {
return $scope.startDate != '';
};
$scope.clearStartDate = function () {
$scope.startDate = '';
};
$scope.dateOptions = {
dateFormat: "yy-mm-dd",
showOn: "focus"
};
}
Run Code Online (Sandbox Code Playgroud)
这很完美:由于AngularUI,AngularJS绑定工作正确地设置了一个datepicker ...
但是如果我将showOn值更改为"button"或"both"(实际显示datepicker按钮的两个可能选项),输入后的所有内容(包含ui-date属性)将停止工作:ng-show,ng- click ...控制器甚至没有被调用.
版本(全部是最新的):
我有一个.NET应用程序,它使用SqlCommand运行以下语句:
DECLARE @SQL VARCHAR(100)
SELECT @SQL = 'CREATE DATABASE ' + @DB
EXEC(@SQL)
Run Code Online (Sandbox Code Playgroud)
@DB参数来自用户输入,因此很明显应用程序容易受到"X DROP DATABASE Y"之类的攻击.我敢肯定一定有一种我想念的明显方式......
编辑:使用参数化语句无法工作,因为您无法在CREATE DATABASE中使用参数(CREATE DATABASE @DB返回语法错误).
c# ×7
powershell ×2
.net ×1
.net-4.0 ×1
amazon-sqs ×1
angularjs ×1
asp.net-core-hosted-services ×1
async-await ×1
gethashcode ×1
hash ×1
ienumerable ×1
javascript ×1
jquery ×1
jquery-ui ×1
nuget ×1
openssl ×1
resharper ×1
sql-server ×1
tfs ×1
wpf ×1
wpf-controls ×1