如何为本机C++创建nuget包

spa*_*117 11 c++ nuget visual-studio-2015

我想发布关于sdl_mixer的包,它是一个本地包.我按照教程说的那样做.我把.dll .h.lib文件到包的内容 ,但最终方案没有奏效.那么什么是创造C++的NuGet包正确的方式?

另一个问题是我在nuget中发现,大多数原生c ++包都发布在两个包中,例如:

sdl2_ttf.v140

sdl2_ttf.v140.redist

那么这两个文件有什么区别?我怎么才能发布这样的包呢?

---------------------------------------更新---------- --------------------------

当我喜欢教程说如何发布本机包.i已写如下 autopkg file

nuget{
    nuspec {
        id = MySdl_mixer;
        version :2.0.0.0;
        title: sdl mixer;
        authors: { Sam Lantinga, Stephane Peter, Ryan Gordon};
        owners: {spartawhy117};
        licenseUrl: "http://libsdl.org/license.php";
        projectUrl: "http://libsdl.org/index.php";
        iconUrl:"";
        requireLicenseAcceptance:false;
        summary:Nothing;
        description: @"SDL_mixer is a sample multi-channel audio mixer library.... 
    ";
       releaseNotes: "Release of C++ ";
       copyright:Copyright 2015;
       tags: {v140 ,sdl_mixer , native, CoApp };
};

    files {
        #defines {
            Include = include\;
            Bin = bin64\;
            Lib = lib64\;
        }

        include:{"${Include}*"};

        [x64,v140,debug,desktop]{
            lib: ${Lib}SDL2_mixer.lib;
            bin: ${Bin}SDL2_mixer.dll?
        }
        [x64,v140,release,desktop]{
            lib: ${Lib}SDL2_mixer.lib;
            bin: ${Bin}SDL2_mixer.dll?
        }
     };
    targets {
            Defines += HAS_SDLMIXER;
     };
Run Code Online (Sandbox Code Playgroud)

}

运行命令后

Write-NuGetPackage.\ sdl_mixer.autopkg

它返回错误:结束的意外输入.所以有什么问题 ?

C J*_*son 7

我搜索了几天,直到我发现互联网上根本没有任何帮助。我确实设法拼凑出如何做到这一点,并通过反复试验使其运行良好。我在这里记录了:

https://digitalhouseblog.wordpress.com/2019/08/22/how-to-make-a-nuget-package-for-c/

但无论如何我都会在这里总结:

  • 将您的本机库文件收集或暂存到您选择的文件夹中。
  • 在该文件夹中创建一个 *.nuspec 文件。
  • 编辑 *.nuspec 文件以包含要包含在包中的文件。
  • 创建一个 *.props 文件
  • 调用 nuget pack 来创建包。
  • 将 nuget 包推送到某处的提要。
  • 创建一个packages.config 文件。
  • 编辑visual studio项目文件导入*.props文件

请注意,从未使用过 Visual Studio IDE 中的 nuget 工具。你必须手动做很多事情。有关完整的详细信息和解释,请参阅链接。