小编mip*_*pnw的帖子

VSCode不断要求我恢复

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 builddotnet 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

.net-core visual-studio-code windows-subsystem-for-linux

9
推荐指数
1
解决办法
1609
查看次数

如何将电话号码与联合到 Google 的 Cognito 用户池映射

根据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

7
推荐指数
1
解决办法
729
查看次数

docker 守护进程意外退出

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)

docker

7
推荐指数
1
解决办法
1133
查看次数

Deep Link无法在Android上运行

我正在关注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它的工作原理.手机上的操作系统启动了应用程序. …

android deep-linking applinks

6
推荐指数
1
解决办法
3526
查看次数

如何在给定 AWS Cognito access_token 的情况下获取 AWSCredentials

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)

amazon-web-services amazon-cognito

6
推荐指数
1
解决办法
3583
查看次数

如何退出连接到无头服务器的 dlv 而不终止远程进程

这个问题是关于使用 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)

go docker delve

6
推荐指数
1
解决办法
2377
查看次数

如何使用 VSCode 远程调试 Go 代码

我在需要调试的 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)

启动“附加远程”VSCode 调试配置后,我得到 在此输入图像描述

虽然不是很清楚,但该 UI 让我相信我现在已连接到远程无头调试器并准备好进行调试。我定义了一个断点,我知道该断点会被我可以发送远程进程的请求击中。我发送该请求,得到结果,并且该断点从未命中,表明我尚未实现远程调试。

我的 VSCode“附加远程”配置有问题吗?我可以进行命令行调试,dlv connect :2345并且实际上可以很好地调试远程进程,这表明无头服务器功能正常。我宁愿在 VSCode 中使用源代码进行调试。

go visual-studio-code delve vscode-debugger

6
推荐指数
1
解决办法
8201
查看次数

“go get”无法下载 go 包,Git 存储库托管在 Github Entreprise 上(在 VPN 后面)

我正在尝试下载 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)

git github go github-enterprise

6
推荐指数
1
解决办法
8272
查看次数

NET CORE 2.0 的 Console.WriteLine 在 Windows 上的 xUnit 中不起作用

建议如何在 .NET CORE 2.0 C# 函数中写入控制台,这些函数链接到控制台应用程序或 xUnit 测试?

我对 Console.WriteLine 有一些运气,但仅限于dotnet test在 linux 上。在 Windows 上,'dotnet test' 不产生任何控制台输出,除了有关通过和失败的测试数量的统计信息。

谷歌搜索这个问题,我运行了 2015 年的 ITestOutputHelper 线程,这些线程看起来已经过时或引用了 Visual Studio。我不使用 Visual Studio,因为我需要保持可移植到 Windows + Linux。我主要使用 VSCode 编辑器并在终端中运行大多数构建和测试命令。

此外 ITestOutputHelper 只是一个简单的接口:

  1. 它没有解决任何问题:当然我可以重写我所有的测试代码来调用 _output.WriteLine 而不是 Console.WriteLine 但是我如何实例化 ITestOutputHelper(官方文档在这个问题上仍然含糊不清:https://xunit.github。 io/docs/capturing-output.html )

  2. 我查看了 System.Diagnostics,将所有 Console.WriteLine 调用更改为 Trace.TraceInformation。不幸的是,.NET CORE 2.0 似乎没有实现 System.Diagnostics,因为我的构建找不到 System.Diagnostics.ConsoleTraceListener,我想通过在测试早期调用 Trace.Listeners.Add(myConsoleTraceListener) 将其注册为侦听器。

所以我不需要任何花哨的东西,单元测试不需要远程运行,也不需要并行运行,本地和顺序运行就可以了,只要我能在控制台看到输出。而且我需要可移植到 Windows 和 Linux,看起来这部分是对 XUnit 的要求过高。这是真的吗,有什么想法吗?

xunit .net-core

5
推荐指数
1
解决办法
1572
查看次数

AWS Cognito刷新令牌:如何准确使用它们?

我有一个应用程序,使用授权代码流从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,那些实际上是自动刷新的,怎么办?

amazon-web-services oauth-2.0 amazon-cognito aws-cognito

5
推荐指数
1
解决办法
1161
查看次数