问题标签 [dotnet-sdk]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
microsoft-graph-api - PlannerTaskDetail 的 GetETag 返回 null。If-Match 标头不起作用
我正在尝试更新任务详细信息:
然而GetETag()
回报null
。
ETag 是 AdditionalData 字典的一部分,因此我可以编写自己的方法来提取它。
例如:
但是为什么内置方法不起作用?我的代码和微软的测试代码几乎一模一样。
谢谢。
.net - 如何安装支持 .NET Core 6.0 的 .NET SDK?
我正在尝试编译 Visual Studio 项目 ( .sln
) 并收到错误消息
Error NETSDK1045 The current .NET SDK does not support target .NET Core 6.0。以 .NET Core 5.0 或更低版本为目标,或者使用支持 .NET Core 6.0 的 .NET SDK 版本。
现在,我想知道如何或在何处安装 .NET Core 6.0。
我找到了https://dotnet.microsoft.com/download/dotnet但它只有一个 .NET Core 3.1。
因此,我将不胜感激找到 .NET Core 6.0 的任何指针。
asp.net-core - 如何在没有 assemblyinfo.cs 的情况下将 RootNamespace 属性添加到项目以修复本地化?
我有一个具有以下属性的 asp.net 核心项目:
- 文件名:WebApi.csproj
- 根命名空间:Cmp.WebApi.csproj
- 程序集名称:(未设置)
我正在尝试使用 asp.net 本地化,但资源管理器无法找到语言资源。文档提供了一些答案:
如果程序集的根命名空间不同于程序集名称:
- 默认情况下本地化不起作用。
- 由于在程序集中搜索资源的方式,本地化失败。RootNamespace 是一个构建时值,它对执行进程不可用。如果 RootNamespace 与 AssemblyName 不同,请在 AssemblyInfo.cs 中包含以下内容(将参数值替换为实际值):
问题是在 .net core 5 中不再有 assemblyInfo.cs 文件,而是自动生成的。这意味着我需要以RootNamespace
某种方式添加到 .csproj 文件中。
我怎样才能做到这一点?
编辑 我尝试添加:
到 .csproj 文件,但这不起作用 - 它在 obj 中生成了以下 assemblyInfo
另请注意,如果 RootNameSpace 与程序集名称相同,则此方法可以正常工作。
编辑 2
我也试过:
但这也不起作用,考虑到我在 msbuild 任务中看不到这些属性,这似乎是合乎逻辑的:
.net-5 - 找到 .NET SDK,但没有找到 dotnet.dll
我最近安装了 Visual Studio 2022 预览版。
今天我在一个研讨会上,有一些功能不起作用,原来是因为我安装了 .NET 6 的预览版。
所以我随后卸载了 Visual Studio 2022 预览版。
现在,当我在命令窗口中键入 dotnet --version(或其他命令,如 dotnet --info)时,我收到以下消息:
- 找到 .NET SDK,但在 [C:\Program Files\dotnet\sdk\6.0.100-preview.7.21379.14\dotnet.dll] 中没有找到 dotnet.dll
我尝试修复,然后重新安装 DotNet SDK 5.0.400。机器也重启了几次,还是不行。
我猜卸载程序删除了文件,但未能将注册表恢复到以前的版本。
我该如何解决?
json.net - 从 dotnet 发布输出文件夹运行应用程序时无法加载文件或程序集 Newtonsoft.Json
我发现Newtonsoft.Json
图书馆抛出一个问题
当将应用程序作为 Docker 容器运行时,我想知道为什么会发生这种情况以及为什么依赖项管理无法顺利运行。
我使用 .NET 5。
我有一个MyLibrary.A
明确Newtonsoft.Json 13.0.1
用于序列化和反序列化 json 的库。
我有一个MyLibrary.B
包装库的不同MassTransit.AmazonSQS
库。这个 MassTransit 库也使用 Newtonsoft.Json,但可能是不同的版本。如果我没有做任何明确的事情,似乎 MassTransit 依赖项显示Newtonsoft.Json 11.0.2
. 如果在MyLibrary.B
我明确添加Newtonsoft.Json 13.0.1
,即使我没有明确使用它,那么 MassTransit 似乎很高兴使用这个最新的Newtonsoft.Json 13.0.1
现在,我有一个MyApp
使用MyLibrary.A
和MyLibrary.B
. 它在本地运行良好,但我使用 CI/CD 服务器生成 Docker 映像。
现在我将这个 Docker 映像作为本地容器(作为 Docker Compose)启动,我得到了错误
它抱怨甚至不存在的版本。没有 13.0.0.0,这个库好像是从 12.0.3 到 13.0.1。
我现在正在浏览我所有的库,并确保它们都Newtonsoft.Json 13.0.1
明确使用。当我检测到其中一些使用依赖于Newtonsoft.Json
我的第三方时,我明确添加了相同的版本,这样我就可以在任何地方获得该13.0.1
版本。
更新 1:我的解决方法不起作用。我不知道还能尝试什么。
我什至已经Newtonsoft.Json 13.0.1
明确地将它添加到我的 web 应用程序中,所以我希望至少在运行时它可以使用。
此外,如果我将我的网络作为标准红隼 AspNetCore 应用程序 (.NET 5) 在本地运行,它会正确启动。到底是怎么回事?为什么我的 docker 容器抱怨Newtonsoft.Json 13.0.0.0
找不到?
这些是尝试作为 Docker 容器运行时的痕迹
更新 2:我决定Newtonsoft.Json 11.0.2
在我的库中到处匹配 MassTransit 依赖项。
问题依然存在。
现在的错误是
我不明白。我所有的依赖Newtonsoft.Json
现在都11.0.2
在抱怨。我将在 Web 应用程序主程序集中显式添加此版本(即使我不直接需要它),看看它是否仍然抱怨它。
更新 3Newtonsoft.Json 11.0.2
:在添加到我的所有库并在我的 Web 应用程序程序集中添加相同的依赖项作为依赖项之后仍然存在同样的问题。
根据克里斯的评论,我现在有一个.dockerignore
.
我构建映像的方式是,使用 GitLab,使用标准dotnet build
,dotnet publish
然后将发布文件夹的所有内容复制到 Docker 映像中,如下所示
更具体地说,我使用 Kaniko,这是我的.gitlab-ci.yml
我不知道这是否给dotnet publish
docker 带来了麻烦,或者我的流程中是否存在一些缺陷(它适用于所有其他服务)。可能是什么问题?
我可以看到由以及所有其他Newtonsoft.Json.dll
文件生成的文件,这些文件应该被正确复制到 Docker 映像中。dotnet publish
MassTransit.AmazonSqsTransport
另外,如果我打开,.deps.json
我可以看到所有对Newtonsoft.Json
are 的引用11.0.2
,所以不再有版本冲突(我想!)。
我没主意了。
更新 4 我刚刚清除了所有本地 nuget 包(使用 Ubuntu)
有趣的是,当我在项目之后恢复依赖项时
我可以看到/home/diegosasw/.nuget/packages/newtonsoft.json
有版本11.0.2
和9.0.1
所以我猜想某处某个子依赖项正在使用 Newtonsoft 9.0.1,即使Newtonsoft.Json 9.0.1
在我的*.deps.json
生成中没有 a 的痕迹,dotnet publish
我想知道这是否与我的问题有关,也许是因为那是程序集加载并且11
被忽略?
更新 5
我刚刚看到Newtonsoft.Json 9.0.1
一些测试项目正在使用它,因为我可以在coverlet.collector.deps.json
下面coverlet.core 1.0.0
和Microsoft.Extensions.DependencyModel 2.1.0
我想这不是我问题的原因。
此外,我已验证docker export $(docker ps -lq) -o foo.tar
容器具有Newtonsoft.Json.dll
.
我想了解为什么会发生这种情况,并了解如何更好地解决此类问题。
更新 6(10 月 4 日)
我认为问题不在于 Docker。我认为问题可能与dotnet publish
我遗漏或做错的事情有关。
我把 Docker 留在了外面,因为我没有发现任何问题。我试图简单地做一个
并在该发布文件夹中执行应用程序dotnet MyCompany.ItgService.dll
以重现异常。
但是在发布之前,当我使用
我没有得到那个例外。
有关完整详细信息、跟踪、树结构等,请参阅https://github.com/dotnet/sdk/issues/21716 。
概括
问题是:
为什么
dotnet publish
似乎没有产生我的应用程序运行所需的一切?为什么它在运行时抱怨存在的程序集?
最后更新:问题解决了。请参阅我自己的回复,其中有关如何正确解决此类问题以及我如何通过确保我的测试项目(使用不同版本的库)不发布工件并覆盖所需的依赖程序集来解决它的信息。
.net - IsPublishable 在 .NET 5 单元测试项目中被忽略
我在解决方案中有一些 .NET 项目。当我发布它们时,我只想发布我的src项目的 DLL,而不是测试项目。
https://github.com/dotnet/docs/issues/13365和https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-publish#msbuild都可以使用 IsPublishable .
.NET 5 项目似乎忽略了 IsPublishable。
我在任何测试项目中设置以下
但后来,当我做 a 时,dotnet publish -c Release -o publish
我仍然可以看到测试项目*.dll
和deps.json
. 为什么?如何实现我想要的?
docker - Dockerfile dotnet/sdk/5.0 错误 - container_linux.go:380:启动容器进程导致:exec:“cmd”:$PATH 中找不到可执行文件
带有 dotnet/sdk/5 的 DockerFile 表示 $PATH 中没有 cmd 可执行文件,而使用 /dotnet/framework/sdk:4.8 时,它可以正常工作
我们的 dockerfile 有 .net framework 4.8 (mcr.microsoft.com/dotnet/framework/sdk:4.8) 并且还安装了 VS 构建工具。
这工作正常。
当前要求是升级以使用 .net 5.0 SDK 而不是 4.8 dotnet/sdk:5.0
DockerFile 如下:
我得到的错误是
我的 Docker 桌面使用 WSL2,安装的 Linux 发行版是 Ubuntu 20.04 LTS
c# - 构建/项目类型 - Microsoft.NET.Sdk
在项目上使用 try-convert 到新的项目类型/构建系统 [Microsoft.NET.Sdk]。但是我遇到了它如何解决依赖关系的问题,即我们仍然有一些地方引用旧的 WPF 工具包,并且它与 VisualStateManager 的标准库有命名空间冲突。以前我们用本地项目中的引用别名解决了它,但现在它似乎正在传播到引用该项目的其他项目。
如何使用现有的构建系统优雅地解决这个问题。
c# - .NET Framework/Core SDK 包含多少个编译器?
我已经阅读了很多关于 .NET SDK 和 .NET Runtime 之间区别的文章,但我仍然不明白 .NET SDK 的哪些部分包含编译器。我知道 .NET SDK 包含:
- CLR(带有 JIT 编译器)
- 类库(BCL、FLC 等)
- 文档
- 头文件
- 编译器(csc.exe、vbc.exe)
- ???
但是.NET 是多语言平台。有两种以上的语言(C#、VisualBasic)。所以我的问题是当我安装 .NET SDK 时我得到了多少编译器?