我在 dot net 中有一个 Web 应用程序以及其他项目。当我打开 .sln 文件并发布 Web 项目时,它确实如此。但是,当我尝试使用命令行和 .csproj 发布 Web 项目时,它会出错。“无事可做。指定的项目都不包含要恢复的包。”
我已经更新了一个类库project.json来定位netstandard1.3和net64.
有了这个改变:
$ dotnet restore
log : Restoring packages
warn : Dependency specified was NETStandard.Library (>= 1.3.0) but ended up with
NETStandard.Library 1.6.0.
Run Code Online (Sandbox Code Playgroud)
我正在发布一个库,真的需要目标netstandard1.3/ net46.
如何诊断为何使用更高版本?
您好,我正在尝试dockerize一个ASP NET Core 2.1应用程序,docker build当它执行时失败dotnet restore。我已经检查了其他线程来解决此特定问题,
Nuget连接尝试失败“无法加载源的服务索引”。
那里提供的解决方案对我没有帮助。
Docker文件
ARG serverPath=./Core/Server
FROM microsoft/dotnet:sdk AS build-env
WORKDIR /app
COPY ./Core/Server/*.csproj ./
RUN dotnet restore //fails here
COPY ./Core/Server/ ./
RUN dotnet publish -c Release -o out
FROM microsoft/dotnet:2.1-aspnetcore-runtime
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet","Server.dll"]
Run Code Online (Sandbox Code Playgroud)
docker build的输出
$ docker build -t server .
Sending build context to Docker daemon 11.13MB
Step 1/11 : ARG serverPath=./Core/Server
Step 2/11 : FROM microsoft/dotnet:sdk AS …Run Code Online (Sandbox Code Playgroud) 我创建了一个私有 NuGet 服务器(https://github.com/ai-traders/liget),它需要 API 密钥来上传包,但不需要下载/恢复它们。
我确信我可以增强服务器的代码以在恢复时强制使用 API 密钥,但我所做的调查(主要是谷歌搜索)尚未提供任何有关如何指定 API 密钥dotnet restore以及Visual Studio NuGet UI 似乎不允许这样做。
有没有办法为 dotnet 恢复指定 API 密钥,或者是将其作为查询参数包含的唯一选项(例如https://mynuget.com?apikey= <API_KEY>)?理想情况下,我想将 API 密钥放在标头中。
我在获取特定程序集版本的第一个版本而不是最新版本的 nuget 时遇到问题。以下是解释发生了什么的步骤:
版本 98 和 102 的版本号均为 1.2。如何在不将版本号增加到 1.3 的情况下强制 dotnet restore 获取最新版本的 nuget 包?
谢谢!
我们有一个项目依赖于自定义 NuGet feed(也托管在 VSTS 中)。
我正在尝试整合一个新阶段来生成代码覆盖率报告,如这篇博客文章中所示。我的新阶段如下所示:
并由以下步骤组成:
dotnet restore在“使用此 VSTS/TFS feed 中的包”下拉列表中选择我的自定义 feeddotnet test使用相关参数来收集代码覆盖率问题是dotnet test坚持尝试恢复包本身。由于我找不到方法告诉它使用自定义源,因此在尝试恢复这些包时失败:
D:\a\1\s\MyProject\MyProject.csproj : error NU1101: Unable to find package My.Package. No packages exist with this id in source(s): Microsoft Visual Studio Offline Packages, nuget.org
我的主要构建过程运行良好,并且能够从自定义源恢复包。区别在于使用 Visual Studio(即非dotnet)版本的命令:
处理这个问题的正确方法是什么?
我是否需要找到某种方式来讲述dotnet test我的自定义 Feed?
或者(假设我restore之前正在运行)我是否需要说服它完全跳过恢复?
continuous-integration azure-devops dotnet-cli dotnet-restore dotnet-test
我是Docker的新手,我开发了一个简单的asp.net核心webapi解决方案,该解决方案使用来自私有存储库的NuGet软件包。
dotnet restore命令针对缺少的NuGet软件包返回错误,该软件包位于解决方案内部nuget.config文件中引入的私有存储库中。
有谁知道我的配置和dockerfile有什么问题吗?
Docker文件
FROM microsoft/aspnetcore-build:2.0 AS build-env
WORKDIR /app
# copy csproj and restore as distinct layers
COPY *.csproj ./
RUN dotnet restore
# copy everything else and build
COPY . ./
RUN dotnet publish -c Release -o out
# build runtime image
FROM microsoft/aspnetcore:2.0
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "aspnetcoretssl.dll"]
Run Code Online (Sandbox Code Playgroud)
.dockerignore
bin\
obj\
Run Code Online (Sandbox Code Playgroud)
我在解决方案的根目录中也有一个nuget.config文件,如下所示
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="myrepo" value="\\path\to\the\nuget_packages_folder" />
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
</packageSources>
</configuration>
Run Code Online (Sandbox Code Playgroud)
但是我收到以下消息
docker build -t …
我有一个VSTS内置版本失败,出现以下错误:
error : Unable to load the service index for source [source name] 2018-02-28T09:04:12.1080070Z /usr/share/dotnet/sdk/1.1.4/NuGet.targets(102,5)
error : Response status code does not indicate success: 402 (Payment Required - The user does not have a license for the extension ms.feed.
Run Code Online (Sandbox Code Playgroud)
这是在降低了在VSTS中创建从Basic到Stakeholder的Package的用户的访问级别之后发生的,VSTS又从该用户中删除了Package Management扩展.将访问级别放回Basic并为其提供Package Management扩展可以解决问题,尽管这不是一个长期修复,因为他们现在离开了公司.
我已经确保有用户使用Package Management扩展,并且还有一个具有Package权限的PAT.然后我将nuget.config文件中的密码更新为上述PAT令牌,但是如果设置Package的用户处于利益相关者级别,则构建仍然会失败并出现上述错误.
我猜测用户用他们的PAT设置了一些东西,以某种方式将它们链接到包,但我很难找到它是什么/它可能在哪里.
我正在Docker中托管的构建代理上运行构建.
任何帮助将不胜感激 - 谢谢!
build-agent nuget nuget-package-restore azure-devops dotnet-restore
我有一个引用 Json.Net 12.0.1 的 .NET Core Visual Studio 2017 解决方案。在我的开发环境中一切正常。当我运行 dotnet restore 时,Json.Net 被下载到解决方案包文件夹中的 Newtonsoft.Json.12.0.1。
但是,当我在构建服务器上运行 restore 时,解决方案想要从 nuget 全局缓存中获取一个 Json.Net 版本。
我可以强制将所有包下载到本地包文件夹,但这最终会使用不同的命名约定 (Newtonsoft.Json/12.0.1),当然,无论如何都要重新下载全局变量中存在的所有内容。所以它只会产生很多开销,但仍然不起作用。
我想我可以在我的 .csproj 文件中使用一些 hocus pocus 来为 Json.Net 提供不同的提示路径,但这似乎过于复杂。
有没有办法强制 Nuget 将 Json.net(或任何包)下载到本地包中的特定文件夹,或者使用 CLI 工具以其他方式解决此问题?
同样,这是 .NET Core,所以没有 packages.config。
谢谢!
我的应用程序是由这个 Dockerfile 定义的
FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base
WORKDIR /app
EXPOSE 80
FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
COPY ["MyCertificate.cer", "/usr/local/share/ca-certificates/cacert.crt"]
RUN update-ca-certificates
WORKDIR /src
COPY ["nuget.config", "MyApplication.API/"]
COPY ["MyApplication.API/MyApplication.API.csproj", "MyApplication.API/"]
RUN dotnet restore --configfile MyApplication.API/nuget.config MyApplication.API/MyApplication.API.csproj -v d
COPY . .
WORKDIR "/src/MyApplication.API"
RUN dotnet build "MyApplication.API.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "MyApplication.API.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "MyApplication.API.dll"]
Run Code Online (Sandbox Code Playgroud)
这是我的 nuget.config
<?xml version="1.0" encoding="utf-8"?>
<configuration> …Run Code Online (Sandbox Code Playgroud) dotnet-restore ×10
nuget ×5
.net-core ×4
.net ×3
docker ×3
azure-devops ×2
asp.net ×1
asp.net-core ×1
build-agent ×1
dotnet-cli ×1
dotnet-test ×1
nuget-server ×1
project.json ×1
ssl ×1