NuGet是一个免费的,开源的开发人员,专门用于.NET平台的包管理系统。
带有发布 Docker 和本地 NuGets 的 Visual Studio 2022
我的情况是我有一个包含3个项目的解决方案: A:作为控制台应用程序的启动器 B:作为 Webservice aspnet.core 和 swagger 的 Starter 应该稍后在 docker 映像中运行 C:Modul Lib(这个需要...
请考虑以下 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 执行将内容文件复制到输出的所有操作。
打包本机 C++ DLL 项目的输出以供 .NET Framework 4.8 应用程序使用?
我目前有一个 VS2022 解决方案,其中包括一个构建本机 DLL 的完全本机 VC++ 项目,该项目依赖于许多通过 VCPKG 管理和版本控制的 C++ 库。 本地人...
我在 VS 2015 中的 NuGet 包管理器中收到以下错误 [Nuget.org] 无法加载源 https://api.nuget.org/v3/index.json 的服务索引。 ServicePointManager d...
在 Visual Studio 2017 中打开时 包管理控制台 它会自动打开发行说明选项卡,如何让它停止这样做?
无法加载文件或程序集“StackExchange.Redis,版本=1.0.316.0”
我们正在使用最新版本的 Owin Security RedisTokenProviders,但我们遇到了问题: 无法加载文件或程序集“StackExchange.Redis,版本=1.0.316.0,文化=中性,PublicKeyToken...
以下是项目的 NuGet 屏幕截图。 “更新”选项卡未列出任何软件包。 但此 Installed 显示该软件包有 2 个主要版本已过时。我以前见过这种情况发生过......
Azure Artifacts 在尝试构建 Dockerfile 时给出未经授权的信息
我正在使用 Azure DevOps Pipelines 从我的 github 存储库创建 Docker 映像。但是,访问我在 Azure Artifacts 中托管的 nuget 包时遇到问题。未经授权返回...
如何在 Visual Studio 中降级 Nuget 包?
我最近更新了 .NET MAUI 项目 (.NET 8) 中的 Nugget 包以预览 9.x,这带来了致命的后果。如何将它们降级回最新的稳定版本? 正在升级.NE...
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)'
有没有办法直接从命令行查看Visual Studio可用的Nuget包源
如何通过命令行查看 Visual Studio 中的 Nuget 包源,而不需要进入 Visual Studio 中的包管理器设置?此外,dotnet cli 还通过运行 &q...
为什么 Rider 无法解析对我已安装的 NuGet 包的引用?
我有一个 .Net Core 项目,并且正在使用安装的最新版本的 Rider。我对这里的 Rider 还很陌生(从使用 Visual Studio 迁移过来)。 其中一个项目引用了 DiDiSoft
VS2022(win10)中如何在某个绝对路径下统一管理Nuget包?
我想把NuGet包放在绝对路径D:c_packages下统一管理,而不是每个项目都有自己的packages目录,所以我修改了C:\Use中的NuGet.Config...
使用GeneratePathProperty将另一个包中的程序集包含到我的NuGet包中
我正在构建一个依赖于另一个 NuGet 包的工具包。由于它不是常用的库,因此它必须将所有依赖项包含到 tools\ 目录中。我有以下 csproj (只有
我有本地公司 TFS 2018 服务器和 Nuget。 我创建了一个 nuget-feed。 我将使用此提要进行 1 次迭代。 然后,我需要为下个月创建下一个提要。这是业务流程。 S...
从 NuGet 包管理器安装 NuGet 包时,在 VS2017 中配置了多个 NuGet 包源,NuGet 客户端尝试检索所有配置的 N 个包中的包...
如何使用 Visual Studio 2022 全局管理解决方案中所有项目的 nuget 包?
我有一个使用 Visual Studio 2022 在 .NET 6.0 中创建的解决方案,其中有很多项目。 每个项目的 .csproj 文件中都有很多 nuget 包引用,如下所示。 是否可以管理所有...
我在了解如何将 NuGet 包发布到我的私有本地 NuGet 源时遇到一些困难。我在 Stack Overflow 上发现了一些关于同一问题的问题,但它们似乎都已经过时了。 我有
使用“dotnet pack”和“GeneratePackageOnBuild”之间的区别?
我知道使用 dotnet pack 旨在创建 NuGet 包,而 dotnetpublish 旨在创建可部署的 DLL/EXE。但是,使用......中的GeneratePackageOnBuild属性
为什么即使指定了 --ignore-failed-sources,dotnet-ef 安装也会失败
我正在通过 Azure DevOps Pipelines 构建 .NET 6 项目。其中一个步骤是安装实体框架工具,以便后续步骤可以生成 SQL 迁移脚本。 不过安装步骤