Windows 10上的VSCode 1.20.0,带有C#扩展名ms-vscode.csharp 1.14.0.VSCode终端指向bash(适用于Linux的Windows子系统)VSCode在包含.NET CORE 2.0 C#项目的文件夹上打开
一切都很好,intellisense工作,项目参考被理解.
每当我将焦点切换到VS Code终端并输入"dotnet build"或"dotnet test"时,VSCode就会感到困惑.Red Squigglies强调每行源代码,intellisense停止工作,VSCode打开两个信息框说
Info: There are unresolved dependencies from src\Project.csproj. Please execute the restore command to continue.
Info: There are unresolved dependencies from test\Project.Tests.csproj. Please execute the restore command to continue.
当我单击信息框内的"恢复"按钮时,大约15秒后项目再次工作.但为什么,这种情况一直在发生,我倾向于经常使用dotnet构建.我可以不同地配置VS代码以避免此问题吗?构建代码会破坏编辑器功能似乎不对,所以我必须做错事.
编辑:
这个问题似乎只在我dotnet build或dotnet testWSL\bash(无论是内部终端还是外部终端)时重现.当我在外部cmd.exe中构建或测试时,它似乎没有重现
编辑:
cmd.exe dotnet --info
.NET命令行工具(2.1.4)
产品信息:版本:2.1.4提交SHA-1哈希:5e8add2190
运行时环境:操作系统名称:Windows操作系统版本:10.0.16299操作系统平台:Windows RID:win10-x64基本路径:C:\ Program Files\dotnet\sdk\2.1.4 \
Microsoft .NET核心共享框架主机
版本:2.0.5建立:17373eb129b3b05aa18ece963f8795d65ef8ea54
WSL\bash $ dotnet --info
.NET命令行工具(2.0.3)
产品信息:版本:2.0.3提交SHA-1哈希:eb1d5ee318
运行时环境:操作系统名称:ubuntu操作系统版本:16.04操作系统平台:Linux RID:ubuntu.16.04-x64基本路径:/usr/share/dotnet/sdk/2.0.3/
Microsoft .NET核心共享框架主机
版本:2.0.3 Build:a9190d4a75f4a982ae4b4fa8d1a24526566c69df
根据Google SignIn 的范围,没有“电话”范围,唯一的范围是 openid、电子邮件、个人资料。
我的 Cognito 用户池有一个电话用户属性,它是必需的。
对于直接使用用户池注册的用户,他们在亚马逊托管的 UI 中输入他们的电话号码,该 UI 在注册表单中显示一个电话字段,一切都很好。
对于注册 Google 的用户,他们会收到错误消息。我已经将其追溯到 Google 不通过 phone_number 发送并且从 Google 到用户池属性的映射失败的事实。如果我创建一个新池,它不需要与 Google 的 phone_number 联合工作,那么当我要求该属性失败时,尽管我测试的 Google 帐户有一个 phone_number。
使用联合到 Cognito 用户池的 Google 登录时,真的无法映射手机吗?
托管的注册 UI 是否可以为我的 Google 用户显示一个字段,要求他们填写通过 Google 进行身份验证和重定向到我的重定向 URL 的托管 UI 之间的电话号码?
替代解决方案?
amazon-web-services amazon-cognito google-signin aws-cognito
Docker 无缘无故退出,我试图了解发生了什么。
现在 docker 守护进程是一个已加载的服务,处于非活动状态,退出状态为 0 SUCCESS。
$ systemctl status docker
? docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: inactive (dead) since Tue 2020-12-01 06:25:16 UTC;
Docs: https://docs.docker.com
Main PID: 2218 (code=exited, status=0/SUCCESS)
Run Code Online (Sandbox Code Playgroud)
查看 docker 日志,发生这种情况是因为它处理了“终止”信号:
$ journalctl -u docker.service | tail -25
Nov 30 18:30:21 ip-10-38-4-210 dockerd[2218]: time="2020-11-30T18:30:21.728694550Z" <redacted irrelevant>
Dec 01 06:25:05 ip-10-38-4-210 systemd[1]: Stopping Docker Application Container Engine...
Dec 01 06:25:05 ip-10-38-4-210 dockerd[2218]: time="2020-12-01T06:25:05.867748396Z" level=info msg="Processing signal 'terminated'"
Dec 01 …Run Code Online (Sandbox Code Playgroud) 我正在关注Android开发者文档中的应用内容创建深层链接,以创建Android应用中活动的深层链接.
新的应用程序项目,我已经指定了与该教程完全相同的活动:
<activity
android:name="com.example.android.GizmosActivity"
android:label="@string/title_gizmos" >
<intent-filter android:label="@string/filter_view_http_gizmos">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<!-- Accepts URIs that begin with "http://www.example.com/gizmos” -->
<data android:scheme="http"
android:host="www.example.com"
android:pathPrefix="/gizmos" />
<!-- note that the leading "/" is required for pathPrefix-->
</intent-filter>
<intent-filter android:label="@string/filter_view_example_gizmos">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<!-- Accepts URIs that begin with "example://gizmos” -->
<data android:scheme="example"
android:host="gizmos" />
</intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)
当我测试adb shell am start -W -a android.intent.action.VIEW -d "example://gizmos" com.example.android它的工作原理.手机上的操作系统启动了应用程序. …
http://<domain>.auth.<region>.amazoncognito.com/login在 Android 应用程序中,一旦用户完成 Cognito 用户池的身份验证,我就会收到 JWT access_token 。该用户池链接到 Cognito 身份池。
我应该使用该 access_token 调用什么 API 来获取AWSCredentials对象。
我发现的最接近的一个是AssumeRoleWithWebIdentity,但这是一个 STS API,而且我在网上读到的一些内容似乎建议开发人员不要直接使用 STS,而是依赖 Cognito。
此外,我不希望我需要的 API 需要指定角色名称。Cognito 身份池已配置为向经过身份验证的用户提供特定角色。AssumeRoleWithWebIdentity 将角色名称作为 API 的输入。因此,这看起来不太正确。
我查看了Cognito Identity Pool API Reference,但找不到采用 access_token 并返回 AWS 凭证的 API。
更新:
以下答案使用GetCredentialsForIdentity抛出异常ResourceNotFoundException表示找不到指定的 IdentityId。
string access_token = ...
var jwtAccessToken = System.IdentityModel.Tokens.Jwt.JwtSecurityToken(access_token);
var client = new AmazonCognitoIdentityClient(new AnonymousAWSCredentials(),REGION);
var response = await client.GetCredentialsForIdentityAsync(new GetCredentialsForIdentityRequest
{
IdentityId=String.Format("{0}:{1}", REGION, jwtAccessToken.id),
Logins=new Dictionary<string,string>
{
{String.Format("cognito-idp.{0}.amazonaws.com/{1}", REGION, …Run Code Online (Sandbox Code Playgroud) 这个问题是关于使用 delve 调试器远程调试 golang 代码。具体来说,如何在不终止远程进程的情况下断开客户端调试器的连接。
我在需要调试的 docker 容器内运行一个进程。该进程在 docker 的入口点通过以下方式启动
dlv debug /go/src/path/to/package --headless --listen=:2345 --log
docker 容器通过以下方式启动
docker run --rm -it -p 2345:2345 my_image:tag
从我的工作站,我通过以下方式连接到 delve 无头服务器
$dlv connect :2345
Type 'help' for list of commands.
(dlv)
Run Code Online (Sandbox Code Playgroud)
此时我会进行一些调试。当我完成后,我希望能够在不终止正在调试的进程的情况下断开与无头服务器的连接。
(dlv) exit
Run Code Online (Sandbox Code Playgroud)
不幸的是,上面的命令断开了 delve 客户端与无头服务器的连接,并且还终止了我正在调试的远程进程,并且由于那是 docker 容器的入口点,因此容器停止。我想避免因终止远程进程而断开连接,如何?
我已经查看了 的论点(dlv) exit,但看不到有帮助的论点。
(dlv) help exit
Exit the debugger.
exit [-c]
When connected to a headless instance started with the --accept-multiclient, pass -c to resume the execution of the target process before …Run Code Online (Sandbox Code Playgroud) 我在需要调试的 docker 容器内运行一个进程。该进程在 docker 的入口点 via 启动
dlv debug /go/src/path/to/package --headless --listen=:2345 --log,以便稍后在 VSCode 中启用调试。
docker 容器通过 启动
docker run --rm -it -p 2345:2345 my_image:tag。注意 delve 的端口是暴露的。
在VSCode中我定义launch.json如下:
{
"version": "0.2.0",
"configurations": [
{
"name": "Attach remote",
"type": "go",
"request": "attach",
"mode": "remote",
"port": 2345,
"host": "127.0.0.1",
"apiVersion": 1
}
]
}
Run Code Online (Sandbox Code Playgroud)
虽然不是很清楚,但该 UI 让我相信我现在已连接到远程无头调试器并准备好进行调试。我定义了一个断点,我知道该断点会被我可以发送远程进程的请求击中。我发送该请求,得到结果,并且该断点从未命中,表明我尚未实现远程调试。
我的 VSCode“附加远程”配置有问题吗?我可以进行命令行调试,dlv connect :2345并且实际上可以很好地调试远程进程,这表明无头服务器功能正常。我宁愿在 VSCode 中使用源代码进行调试。
我正在尝试下载 Entreprise Github 上的 Go 软件包。
值得注意的是,该域在 VPN 外部不可见,但我已连接到该 VPN。
我可以使用浏览器浏览https://github.mydomain.com/some_repository,但需要登录。
$ go get -v github.mydomain.com/some_repository
get "github.mydomain.com/some_repository": found meta tag get.metaImport{Prefix:"github.mydomain.com/some_repository", VCS:"git", RepoRoot:"https://github.mydomain.com/some_repository.git"} at //github.mydomain.com/some_repository?go-get=1
go: downloading github.mydomain.com/some_repository v0.0.0
go get github.mydomain.com/some_repository: github.mydomain.com/some_repository@v0.0.0: verifying module: github.mydomain.com/some_repository@v0.0.0: reading https://sum.golang.org/lookup/github.mydomain.com/some_repository@v0.0.0: 410 Gone
server response: not found: github.mydomain.com/some_repository@v0.0.0: unrecognized import path "github.mydomain.com/some_repository": https fetch: Get "https://github.mydomain.com/some_repository?go-get=1": dial tcp: lookup github.mydomain.com on 8.8.8.8:53: no such host
Run Code Online (Sandbox Code Playgroud)
我最初认为这是由于命令行工具没有访问令牌,因为浏览器可以访问但不能访问go get。我在 Entreprise Github 上生成了一个令牌,并尝试通过以下方式解决此问题:
git config --local http.extraheader "PRIVATE-TOKEN: <token>"
git config …Run Code Online (Sandbox Code Playgroud) 建议如何在 .NET CORE 2.0 C# 函数中写入控制台,这些函数链接到控制台应用程序或 xUnit 测试?
我对 Console.WriteLine 有一些运气,但仅限于dotnet test在 linux 上。在 Windows 上,'dotnet test' 不产生任何控制台输出,除了有关通过和失败的测试数量的统计信息。
谷歌搜索这个问题,我运行了 2015 年的 ITestOutputHelper 线程,这些线程看起来已经过时或引用了 Visual Studio。我不使用 Visual Studio,因为我需要保持可移植到 Windows + Linux。我主要使用 VSCode 编辑器并在终端中运行大多数构建和测试命令。
此外 ITestOutputHelper 只是一个简单的接口:
它没有解决任何问题:当然我可以重写我所有的测试代码来调用 _output.WriteLine 而不是 Console.WriteLine 但是我如何实例化 ITestOutputHelper(官方文档在这个问题上仍然含糊不清:https://xunit.github。 io/docs/capturing-output.html )
我查看了 System.Diagnostics,将所有 Console.WriteLine 调用更改为 Trace.TraceInformation。不幸的是,.NET CORE 2.0 似乎没有实现 System.Diagnostics,因为我的构建找不到 System.Diagnostics.ConsoleTraceListener,我想通过在测试早期调用 Trace.Listeners.Add(myConsoleTraceListener) 将其注册为侦听器。
所以我不需要任何花哨的东西,单元测试不需要远程运行,也不需要并行运行,本地和顺序运行就可以了,只要我能在控制台看到输出。而且我需要可移植到 Windows 和 Linux,看起来这部分是对 XUnit 的要求过高。这是真的吗,有什么想法吗?
我有一个应用程序,使用授权代码流从AWS Cognito用户池TOKEN端点获取3个令牌。它收到一个ID_TOKEN,一个ACCESS_TOKEN和一个REFRESH_TOKEN。
该应用使用ID_TOKEN CognitoAWSCredentials在身份池中获取:
var credentials = new CognitoAWSCredentials(IdentityPoolId, Region);
credentials.AddLogin("cognito-idp.<region>.amazonaws.com/<UserPoolId>", ID_TOKEN);
Run Code Online (Sandbox Code Playgroud)
一段时间后,凭证停止工作,并且NotAuthorizedException按预期的那样,在AWS Client上调用任何方法都将引发throws ,令牌将在1小时后失效。
据我了解,当令牌过期时,可以再次使用TOKEN端点并传递REFRESH_TOKEN来获取新令牌。这很有用,如果可以避免的话,我宁愿不退出应用程序用户,也不强迫他们再次通过OAUTH身份验证流程。
因此,我尝试将令牌HTTP POST刷新为/oauth2/token与我第一次获得令牌时相同的请求标头,但请求正文稍有不同
?grant_type=refresh_token&client_id=xxx&refresh_token=xxx
我得到一个ID_TOKEN和ACCESS_TOKEN,但没有REFRESH_TOKEN。
1-这是预期的吗?这是否意味着2个小时后再次刷新使用了相同的REFRESH_TOKEN?还是TOKEN端点有一个微妙的线索让我发现刷新时出了点问题(更好的线索可能是端点返回错误...)
2-仔细检查后,新的ID_TOKEN与旧的ID_TOKEN相同。这是预料之中的,为什么TOKEN端点没有返回新的ID_TOKEN?(当我使用新的ID_TOKEN创建新的CognitoAWSCredentials时,我得到的证书是无用的。当我第一次访问任何AWS Client时,它们都会引发异常。实际上,由于新的ID_TOKEN是旧的,它们已经过期。)
3-我应该使用ACCESS_TOKEN而不是ID_TOKEN,如何使用ACCESS_TOKEN获取CognitoAWSCredentials?
4- CognitoAWSCredentials实际上RefreshingAWSCredentials,那些实际上是自动刷新的,怎么办?
go ×3
.net-core ×2
aws-cognito ×2
delve ×2
docker ×2
android ×1
applinks ×1
deep-linking ×1
git ×1
github ×1
oauth-2.0 ×1
windows-subsystem-for-linux ×1
xunit ×1