nuget 相关问题

NuGet是一个免费的,开源的开发人员,专门用于.NET平台的包管理系统。

带有发布 Docker 和本地 NuGets 的 Visual Studio 2022

我的情况是我有一个包含3个项目的解决方案: A:作为控制台应用程序的启动器 B:作为 Webservice aspnet.core 和 swagger 的 Starter 应该稍后在 docker 映像中运行 C:Modul Lib(这个需要...

回答 1 投票 0

如何在 nuspec 文件中设置“复制到输出目录”属性?

请考虑以下 nuspec 文件: [一些元数据] 请考虑以下 nuspec 文件: <?xml version="1.0"?> <package > [SOME METADATA] <files> <file src="bin\x64\$configuration$\GR*.filetype" target="content\" /> </files> </package> 上面已成功打包以“GR”开头的文件类型文件,并将它们添加到我的新引用解决方案中。 问题是我希望这些文件始终被复制到输出目录。我可以通过 nuspec 执行此操作,而无需手动修改新解决方案中的属性吗? 如何在 nuspec 文件中设置“复制到输出目录”属性? Martin 指出了正确的方向,我之前也有同样的要求,kjbartel`s 的回答对我很好。我把你的问题的答案贴在这里,更详细,希望能给你一些帮助。 要解决此问题,您可以按照以下步骤操作: 在你的项目文件夹中添加一个xx.targets文件,确保目标文件的名称与包id相同(TestDemo是我的包ID,所以.targets的名称是TestDemo.targets)。 在目标文件中添加以下代码: <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <ItemGroup> <None Include="$(MSBuildThisFileDirectory)GRabc.txt"> <Link>GRabc.txt</Link> <CopyToOutputDirectory>Always</CopyToOutputDirectory> </None> </ItemGroup> </Project> 注意:“$(MSBuildThisFileDirectory)”的路径应该是相对路径,如果你不熟悉,可以使用绝对路径。 在 nuspec 文件中,将所需文件与目标文件一起添加到 Build 目录中。 <files> <file src="bin\x64\Debug\GR*.txt" target="Build\" /> <file src="TestDemo.targets" target="Build\" /> <file src="bin\Debug\TestDemo.dll" target="lib\462" /> </files> 打包此包,然后将其添加到其他项目中进行测试,可以正常工作。 接受的答案对于非内容文件很有用,因为它在安装时不会链接到项目。 但是,我需要一个设置 xml 文件,该文件将添加到项目中,并且 nuget 包用户可以编辑它,并且包 dll 将从输出目录加载编辑后的 xml 文件。 由于内容文件不会复制到构建目录,因此我必须使用 .targets 文件将内容文件复制到输出目录。 nuspec文件 <file src="TestDemo.targets" target="build"/> <file src="Settings.xml" target="content/Configuration"/> .targets 文件(文件名必须与包 ID 相同) <Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Target Name="AfterBuild"> <Copy SourceFiles="$(ProjectDir)Configuration\Settings.xml" DestinationFolder="$(TargetDir)Configuration\" ContinueOnError="true" /> </Target> </Project> 我有一个即将进行的小型项目,它依赖于几乎相同的解决方案。现在是 2024 年,带有 <ProjectReference> 的 SDK 风格项目现已成为常态(现在还不是更早)。 .nuspec 文件现在有一个新的 <contentfiles> 标签,用于 SDK 样式项目。为了向后兼容,建议仍然包含 <files> 标签。我将这一切编译到一个小型示例存储库中:https://github.com/Matheos96/any-file-in-nuget-package 该示例甚至缺少代码,证明您根本不需要编译任何内容来创建 NuGet 包。但截至今天,.csproj 文件是必需的,这里主要用作指定 .nuspec 位置的虚拟文件。希望这也对其他人有帮助。 README.md 中的更多说明 使用新的 NuGet 版本,不需要自定义 MSBuild 目标。您所要做的就是使用设置为 PackageCopyToOutput 的 MSBuild 属性来标记要复制到使用项目的输出目录的相应内容文件:true <ItemGroup> <Content Include="MyFolder\MyFile.txt"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <PackageCopyToOutput>true</PackageCopyToOutput> </Content> </ItemGroup> MSBuild 属性设置为 PackageCopyToOutput 会生成以下 NuGet 包规范文件:true 注意 <package xmlns="http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd"> <metadata> <contentFiles> <files include="any/net8.0/MyFolder/MyFile.txt" buildAction="Content" copyToOutput="true" /> </contentFiles> </metadata> </package> XML 属性,它指示 NuGet 执行将内容文件复制到输出的所有操作。

回答 4 投票 0

打包本机 C++ DLL 项目的输出以供 .NET Framework 4.8 应用程序使用?

我目前有一个 VS2022 解决方案,其中包括一个构建本机 DLL 的完全本机 VC++ 项目,该项目依赖于许多通过 VCPKG 管理和版本控制的 C++ 库。 本地人...

回答 1 投票 0

NuGet 包管理器无法加载服务索引

我在 VS 2015 中的 NuGet 包管理器中收到以下错误 [Nuget.org] 无法加载源 https://api.nuget.org/v3/index.json 的服务索引。 ServicePointManager d...

回答 3 投票 0

如何在打开包管理控制台时禁用发行说明

在 Visual Studio 2017 中打开时 包管理控制台 它会自动打开发行说明选项卡,如何让它停止这样做?

回答 1 投票 0

无法加载文件或程序集“StackExchange.Redis,版本=1.0.316.0”

我们正在使用最新版本的 Owin Security RedisTokenProviders,但我们遇到了问题: 无法加载文件或程序集“StackExchange.Redis,版本=1.0.316.0,文化=中性,PublicKeyToken...

回答 1 投票 0

为什么 NuGet 不显示所有更新?

以下是项目的 NuGet 屏幕截图。 “更新”选项卡未列出任何软件包。 但此 Installed 显示该软件包有 2 个主要版本已过时。我以前见过这种情况发生过......

回答 1 投票 0

Azure Artifacts 在尝试构建 Dockerfile 时给出未经授权的信息

我正在使用 Azure DevOps Pipelines 从我的 github 存储库创建 Docker 映像。但是,访问我在 Azure Artifacts 中托管的 nuget 包时遇到问题。未经授权返回...

回答 2 投票 0

如何在 Visual Studio 中降级 Nuget 包?

我最近更新了 .NET MAUI 项目 (.NET 8) 中的 Nugget 包以预览 9.x,这带来了致命的后果。如何将它们降级回最新的稳定版本? 正在升级.NE...

回答 1 投票 0

Azure DevOps 名称中包含 Platform 的 Nuget 包出现问题

我有 2 个 nugetpackages,它们遵循命名约定: SomePackage.x86 和 SomePackage.x64 在本地,这些通过以下方法进行包引用来工作: 我有 2 个 nugetpackages,它们遵循命名约定: SomePackage.x86 和 SomePackage.x64 在本地,这些工作通过以下方法进行包引用: <PackageReference Include="SomePackage.$(Platform)" Version="xx.xx.xx.xx" /> 使用 x86 或 x64 的配置集,它们都可以正常工作。 尝试执行 nuget 恢复任务时出现问题: - task: NuGetCommand@2 displayName: Restore Nuget Packages inputs: restoreSolution: '$(Build.SourcesDirectory)\MySolution\MySolution-$(buildPlatform).sln' feedsToUse: config nugetConfigPath: '$(Build.SourcesDirectory)\MySolution\.nuget\NuGet.Config' 我在平台矩阵中也确实有这项任务。 所以理想情况下,一个人会构建 x86,一个人会构建 x64 - job: Build dependsOn: SetVersion strategy: maxParallel: 2 matrix: x86: buildPlatform: 'x86' x64: buildPlatform: 'x64' 当管道尝试恢复包时,它显然使用了不正确的平台,如下是错误 error NU1301: Failed to retrieve information about 'SomePackage.Any CPU' from remote source 'https://somenugeturl/SomePackage.any cpu/index.json' 为了让这个问题变得更加复杂,我在 .NET Framework 4.8 和 .NET 6.0 中进行了编译。 在.net框架中,我可以设置默认平台,这将完成初始构建,但是,我不确定其他平台是否可以正常工作。 我尝试将 nuget 恢复更改为: arguments: "-Property Platform='x86'" 我也尝试过 dotnet restore "MySolution.sln" --arch x86 这仍然给我任何CPU错误。 我已经在项目中设置了我的平台和平台目标,它不会改变任何东西: <Platforms>x86;x64</Platforms> <PlatformTarget>x64</PlatformTarget> <TargetFramework>net6.0-windows</TargetFramework> 我想知道是否有处理此类包裹的标准方法? 构建解决方案或项目时,如果不指定构建配置(buildConfiguration|buildPlatform),它将使用默认配置“Debug|Any CPU”来运行恢复和构建。 要在运行 restore、build 和其他步骤(如 publish、pack 等)时覆盖默认配置,您可以执行以下操作: variables: buildConfiguration: Release jobs: - job: build strategy: matrix: x86: buildPlatform: 'x86' x64: buildPlatform: 'x64' steps: - task: DotNetCoreCLI@2 displayName: 'Restore Dependences' inputs: command: 'restore' projects: 'path/to/solution.sln' restoreArguments: '-p:Configuration=$(buildConfiguration);Platform=$(buildPlatform)' feedsToUse: 'config' nugetConfigPath: 'path/to/nuget.config' - task: DotNetCoreCLI@2 displayName: 'Build Solution' inputs: command: 'build' projects: 'path/to/solution.sln' arguments: '--no-restore -c $(buildConfiguration) -p:Platform=$(buildPlatform)'

回答 1 投票 0

有没有办法直接从命令行查看Visual Studio可用的Nuget包源

如何通过命令行查看 Visual Studio 中的 Nuget 包源,而不需要进入 Visual Studio 中的包管理器设置?此外,dotnet cli 还通过运行 &q...

回答 2 投票 0

为什么 Rider 无法解析对我已安装的 NuGet 包的引用?

我有一个 .Net Core 项目,并且正在使用安装的最新版本的 Rider。我对这里的 Rider 还很陌生(从使用 Visual Studio 迁移过来)。 其中一个项目引用了 DiDiSoft

回答 2 投票 0

VS2022(win10)中如何在某个绝对路径下统一管理Nuget包?

我想把NuGet包放在绝对路径D:c_packages下统一管理,而不是每个项目都有自己的packages目录,所以我修改了C:\Use中的NuGet.Config...

回答 1 投票 0

使用GeneratePathProperty将另一个包中的程序集包含到我的NuGet包中

我正在构建一个依赖于另一个 NuGet 包的工具包。由于它不是常用的库,因此它必须将所有依赖项包含到 tools\ 目录中。我有以下 csproj (只有

回答 1 投票 0

如何克隆TFS-2018 nuget feed?

我有本地公司 TFS 2018 服务器和 Nuget。 我创建了一个 nuget-feed。 我将使用此提要进行 1 次迭代。 然后,我需要为下个月创建下一个提要。这是业务流程。 S...

回答 2 投票 0

NuGet 包还原尝试在所有配置的 NuGet 源中检索

从 NuGet 包管理器安装 NuGet 包时,在 VS2017 中配置了多个 NuGet 包源,NuGet 客户端尝试检索所有配置的 N 个包中的包...

回答 1 投票 0

如何使用 Visual Studio 2022 全局管理解决方案中所有项目的 nuget 包?

我有一个使用 Visual Studio 2022 在 .NET 6.0 中创建的解决方案,其中有很多项目。 每个项目的 .csproj 文件中都有很多 nuget 包引用,如下所示。 是否可以管理所有...

回答 3 投票 0

如何在构建时自动将 NuGet 包发布到本地源?

我在了解如何将 NuGet 包发布到我的私有本地 NuGet 源时遇到一些困难。我在 Stack Overflow 上发现了一些关于同一问题的问题,但它们似乎都已经过时了。 我有

回答 1 投票 0

使用“dotnet pack”和“GeneratePackageOnBuild”之间的区别?

我知道使用 dotnet pack 旨在创建 NuGet 包,而 dotnetpublish 旨在创建可部署的 DLL/EXE。但是,使用......中的GeneratePackageOnBuild属性

回答 1 投票 0

为什么即使指定了 --ignore-failed-sources,dotnet-ef 安装也会失败

我正在通过 Azure DevOps Pipelines 构建 .NET 6 项目。其中一个步骤是安装实体框架工具,以便后续步骤可以生成 SQL 迁移脚本。 不过安装步骤

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.