gpt4 book ai didi

python - 如何在 Visual Studio pyproj 项目中设置自定义构建步骤

转载 作者:行者123 更新时间:2023-11-28 19:05:47 30 4
gpt4 key购买 nike

我在 Visual Studio 2017 Enterprise(版本 15.4)中设置了一个 python 项目作为混合项目解决方案的一部分,该解决方案还包含各种 C#(.Net 4.6.2、.Net Core 2.0 和 Xamarin)项目。在构建过程中,我想使用一些自己编写的 C# 工具生成几个 .py 源代码文件,这也是构建的一部分。此外,.pyproj 文件中列为“编译”项的所有 .py 文件都应压缩为 .zip 文件并写入某个输出目录。

在我的 .pyprof MSBuild 文件中,我创建了两个“自定义构建步骤”目标,如下所示:

<Target Name="MyPreBuildStep" BeforeTargets="Build">
Call self-written py-Code generator
</Target>

<Target Name="MyPostBuildStep" AfterTargets="Build"
Inputs="@(Compile)"
Outputs="$(OutputPath)\$(PythonProjectName).zip">
<Zip ZipFileName="$(OutputPath)\$(PythonProjectName).zip"
WorkingDirectory="$(MSBuildProjectDirectory)\..\" Files="@(Compile)" />
</Target>

从 MSBuildCommunityTasks 导入的 Zip 任务。

如果我在 Visual Studio 中右键单击该项目并单击“重建”,一切正常。预先生成 py 代码,并将所有 @(Compile) 项放入 .zip 文件中。

不幸的是,正常的“构建”从不调用上述目标。因此,使用我当前的设置,我可以通过点击“构建”来构建包含解决方案的 40 个项目,但是 python 项目需要通过点击“重建”来获得额外邀请。很烦人。

我试图调查“Microsoft.Python.Tools.Web.targets”和“Microsoft.Python.Tools.targets”的内容。在这些文件的某个地方,一条评论说:“构建目标作为发布阶段的一部分被调用。”嗯。

有人能告诉我如何在 .pyproj 中指定一些简单的自定义构建步骤,这些步骤只在正常的“构建”过程中起作用吗?

谢谢。

最佳答案

Build 仅在需要时调用,这是根据比较输入和输出文件的最后修改时间确定的。

大多数这些都是自动收集的,但在您的情况下,输出文件无法识别,因此不会影响是否需要构建它。 (如果您检查 Microsoft.PythonTools.targets 并找到 BuiltProjectOutputGroupSourceFilesProjectOutputGroup 目标,这些就是提供文件的目标。)

在这种情况下,您只需要将 ZIP 文件添加为输出文件,以便对其进行检查。你可以这样做:

<ItemGroup>
<OutputFiles Include="$(OutputPath)\$(PythonProjectName).zip">
<Visible>false</Visible>
</OutputFiles>
</ItemGroup>

请注意,它需要在不运行构建目标的情况下可用,因此您必须能够静态计算路径,但如果此文件不存在或任何源文件比它更新,现在项目应该重建.

关于python - 如何在 Visual Studio pyproj 项目中设置自定义构建步骤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47061831/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com