编译器抱怨resultingThing在下面的代码中被分配之前正在使用.
private IEnumerable<IThing> FindThings(dynamic spec)
{
if (spec == null)
yield break;
IThing resultingThing;
if (spec.Something > 0 && dictionary.TryGetValue(spec.Something, out resultingThing))
yield return resultingThing;
else
// ...
}
Run Code Online (Sandbox Code Playgroud)
为什么声称这个?
我已经尝试了一个不同版本的方法,其中没有产量使用(例如,只是return IEnumerable<IThing>)但是使用动态参数,我尝试了一种不传递动态的方法版本(即我们在以前版本的C#).这些编译.
我正在编写一些Resarper Custom Patterns来警告我们一些需要注意的代码结构.其中一个是使用lambda变量OnPropertyChanged(()=> propertyname)替换OnpropertyChanged("String")
我定义的搜索模式是:
public $type$ $property$
{
get { return $backingfield$; }
set
{
if($backingfield$ != value) {
$backingfield$ = value;
OnPropertyChanged($String$);
}
}
}
Run Code Online (Sandbox Code Playgroud)
这种模式正在被替换为:
public $type$ $property$
{
get { return $backingfield$; }
set
{
if($backingfield$ != value) {
$backingfield$ = value;
OnPropertyChanged(() => $property$);
}
}
}
Run Code Online (Sandbox Code Playgroud)
问题: 应用此时,Resharper会抛弃属性上定义的属性.这个片段:
[MyAttribute]
public int Test
{
get { return _Test; }
set
{
if (_Test != value)
{
_Test = value;
OnPropertyChanged("Test");
}
}
}
Run Code Online (Sandbox Code Playgroud)
被取代
public …Run Code Online (Sandbox Code Playgroud) 我正在使用Visual Studio与git的集成.我修改了构建定义的Source Settings来监视所有git branches(refs/heads/*).这适用于自动触发的构建.
当我从Visual Studio中手动排队新的构建时,唯一的选择是对默认构建进行排队(例如,如果我默认refs/heads/develop,我不能排队refs/heads/mybranch).解决方法是在构建定义中临时更改默认值.还有另外一种方法吗?不知何故传递参数或许?
可以通过命令行实用程序将分析器应用于代码。是否可以对此实用程序中的代码应用相应的代码修复?
我想做的是查询包含分析器的 NuGet 包,针对代码库运行所有分析器,并让它们为检测到的每个实例应用相应的代码修复。
我有一个类,里面有一个枚举属性。由于以下文档的 .NET 表示形式中的属性,在保存整个文档时,该属性会作为字符串写入数据库
public enum Status { Good, Bad }
public class Document
{
[BsonRepresentation(BsonType.String)]
public Status Status { get; set; }
// ...
}
Run Code Online (Sandbox Code Playgroud)
稍后,当我想要更新文档中的值而不保存整个文档时,我构建一个如下过滤器:
var builder = Builders<T>.Update;
var filter = builder.Set(new StringFieldDefinition<T, Status>(fieldName), (Status)value);
var result = await Context.Collection.UpdateManyAsync(filter, update);
Run Code Online (Sandbox Code Playgroud)
不幸的是,这会写入枚举的整数值。
如果我将过滤器更改为这个
var filter = builder.Set(new StringFieldDefinition<T, Status>(fieldName), value.ToString());
Run Code Online (Sandbox Code Playgroud)
司机会抛出一个InvalidCastException。如何正确构建过滤器?有没有另一种方法可以直接设置枚举值而不替换文档?
我想到可能有一种方法可以将单字段行为与整个文档的属性相关联,但我似乎不知道如何做到这一点。
有没有办法在基于 yaml 的管道中设置构建的优先级?Azure DevOps API中似乎有关于构建优先级的参考,但没有介绍如何通过 yaml 执行此操作。我以为触发器部分可能有一些文档,但没有。
我们需要这个,因为我们有一些快速构建的 NuGet 包,但这些包通过缓慢构建的管道而变得匮乏,使得包的周转时间变得痛苦。
我能想到的最接近解决这个问题的方法是通过 yaml 中的代理要求
demands:
- Agent.ComputerName = XYZ
Run Code Online (Sandbox Code Playgroud)
分离构建管道,但这有点麻烦,并且不能有效地使用代理。
在用户界面中设置它的方法是可以接受的,但我似乎找不到任何东西。
我在 csproj 文件中看到了一些这样的代码
$([System.DateTime]::UtcNow.ToString(mmff))
Run Code Online (Sandbox Code Playgroud)
自动增加程序集版本:
<VersionSuffix>2.0.0.$([System.DateTime]::UtcNow.ToString(mmff))</VersionSuffix>
<AssemblyVersion Condition=" '$(VersionSuffix)' == '' ">0.0.0.1</AssemblyVersion>
Run Code Online (Sandbox Code Playgroud)
那是什么语言/脚本?我如何使用它来获取两个日期之间的差异?
我试图做这样的事情:
<VersionMajor>2</VersionMajor>
<VersionMinor>1</VersionMinor>
<DaysFromLastRelease>$(([System.DateTime]::UtcNow - new [System.DateTime](2021,1,1))::TotalDays)</DaysFromLastRelease>
Run Code Online (Sandbox Code Playgroud)
但它不起作用:)
鉴于此代码,
interface TaskStartedEvent {
type: "started",
task: string
}
interface TaskLogEvent {
type: "log",
task: string,
message: string
}
interface TaskFailedEvent {
type: "failed",
task: string,
error?: string
}
interface FreeLog {
message: string | Error,
meta?: unknown
}
interface UndefinedTask {
task?: undefined
}
type TaskEvent = TaskStartedEvent | TaskLogEvent | TaskFailedEvent;
type RuntimeEvent = (FreeLog & UndefinedTask) | TaskEvent;
function foo(ev: RuntimeEvent) {
console.log(ev);
}
foo({ message: "bar", type: "log" });
Run Code Online (Sandbox Code Playgroud)
为什么 Typescript 编译器在这里没有失败?
我传递了一个type字段,所以它不能是一个(FreeLog …
我认为这是一个棘手的问题,但我想验证我的软件架构足够强大.
我计划在我的代码上执行这些工具:
但我想要一些工具来检查(除其他外):
总之,我想要开源工具来突出我项目的任何建筑故障.
我知道最好的工具是经验丰富的建筑师,但即使是最好的木匠也需要一把好的锤子;)
我觉得我在这次代码短途旅行中遗漏了一些东西。让我引导您完成这个过程。
在 C# 中,我使用非常简单的代码。没有launchsettings.json,只需对其进行硬编码以查看是否有效。以下是设置和主要内容,以便您可以看到它是如何启动的:
public class Program
{
public static HttpListener listener;
public static string url = "http://localhost:8001/";
---- later on in main:------
public static void Main(string[] args)
{
listener = new HttpListener();
listener.Prefixes.Add(url);
listener.Start();
Console.WriteLine("Listening for connections on {0}", url);
Run Code Online (Sandbox Code Playgroud)
我知道该代码有效。当我在 VS2022 调试模式(无 docker)下运行时,它显示我的简单 html 页面,上面写着“系统正常”。如果我在 docker 中运行它,这就是一切变得奇怪的地方。我现在将介绍 docker 配置。
Docker文件:
FROM mcr.microsoft.com/dotnet/runtime:7.0 AS base
WORKDIR /app
FROM mcr.microsoft.com/dotnet/sdk:7.0 AS build
WORKDIR /src
COPY ["xevenListens.csproj", "."]
RUN dotnet restore "./xevenListens.csproj"
COPY . .
WORKDIR "/src/."
RUN dotnet …Run Code Online (Sandbox Code Playgroud) c# ×5
.net ×2
build ×2
.net-core ×1
architecture ×1
azure-devops ×1
c#-4.0 ×1
csproj ×1
docker ×1
dynamic ×1
enums ×1
git ×1
httplistener ×1
mongodb ×1
msbuild ×1
resharper ×1
roslyn ×1
team-build ×1
tfs ×1
typescript ×1