如何升级NuGet包中包含的* .props?

时间:2016-04-11 22:22:32

标签: nuget nuget-package

我正在开发一个内部NuGet包,它会添加一个预构建事件。

它通过根据documentation指定包含MyPackage.props文件的构建文件夹来实现此目的。

以下是道具文件的内容:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <PropertyGroup>
        <PreBuildEvent>Some commands go here</PreBuildEvent>
    </PropertyGroup>
</Project>

如果项目从未进行过预构建事件,则会创建事件。但是,如果csproj文件中存在现有的PerBuildEvent元素,则不会填充新值。如果我打开csproj文件并手动删除相应的PropertyGroupElement,我可以让它工作:

<PropertyGroup>
    <PreBuildEvent>Some command line stuff</PreBuildEvent>
</PropertyGroup>

但是,我必须从那里删除,因为只是在UI中删除预构建事件的内容不允许写入新值。

我希望在install.ps1中使用基于约定的方法,因为documentation指定:

[NuGet 3.x] This script will not be executed in projects managed by project.json

...(我以前把这部分留了出去)有没有办法在没有csproj文件时这样做?

发生了什么事?

1 个答案:

答案 0 :(得分:1)

我建议您不要在.props中使用prebuild事件,因为我希望您不想覆盖项目中的现有事件。

相反,您可以使用另一个目标,以便在构建之前使用BeforeTargets运行逻辑:

<Target Name="MyBeforeBuild" BeforeTargets="Build">
   <Message Text="### MyBeforeBuild ###" Importance="high" />
</Target>

如果您需要在其他目标之后运行预构建事件,您可能还需要查看使用DependsOnTargets属性。

<Target Name="MyTarget" DependsOnTargets="$(CoreCompileDependsOn)">
</Target>