You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将python NuGet包的二进制文件复制到项目构建输出目录?

如何修改.csproj将Python NuGet包的二进制文件复制到构建目录

你需要在现有.csproj中添加自定义MSBuild目标,利用NuGet包自带的GetPythonRuntimeFiles目标收集需要的文件,再将它们复制到项目输出目录。以下是修改后的完整.csproj内容:

<Project Sdk="Microsoft.NET.Sdk">

    <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFramework>net7.0</TargetFramework>
        <Nullable>enable</Nullable>
        <Platforms>x64</Platforms>
        <!-- 可选:调整Python文件包含规则,对应包内props的配置 -->
        <IncludePythonExe>true</IncludePythonExe>
        <IncludeDistutils>false</IncludeDistutils>
        <IncludeLib2To3>false</IncludeLib2To3>
        <IncludeVEnv>false</IncludeVEnv>
    </PropertyGroup>

    <ItemGroup>
      <PackageReference Include="python" Version="3.11.2" />
    </ItemGroup>

    <!-- 自定义目标:收集并复制Python运行时文件到输出目录 -->
    <Target Name="CopyPythonRuntimeFiles" AfterTargets="Build" DependsOnTargets="GetPythonRuntimeFiles">
        <Copy
            SourceFiles="@(PythonRuntime)"
            DestinationFiles="$(OutputPath)%(Link)"
            SkipUnchangedFiles="true"
            OverwriteReadOnlyFiles="true"
        />
    </Target>

    <!-- 可选:清理时删除复制的Python文件 -->
    <Target Name="CleanPythonRuntimeFiles" AfterTargets="Clean">
        <Delete Files="$(OutputPath)%(PythonRuntime.Link)" />
    </Target>

</Project>

修改说明:

  • 属性配置(可选):在<PropertyGroup>中添加的IncludePythonExe等属性,用于控制是否包含Python可执行文件、distutils模块等,对应NuGet包内python.props的默认配置,可根据需求调整。
  • 复制目标:CopyPythonRuntimeFiles目标依赖包自带的GetPythonRuntimeFiles,该目标会自动收集符合规则的Python运行时文件(DLL、EXE、Lib文件等)。通过Copy任务将这些文件按原有目录结构复制到$(OutputPath)(项目输出目录)。
  • 清理目标(可选):CleanPythonRuntimeFiles目标会在执行清理操作时,删除输出目录中复制的Python文件,保持输出目录干净。

内容的提问来源于stack exchange,提问作者Matt Thomas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 05:35:20