2016-04-11 67 views
0

我正在研究一個內部的NuGet包,它增加了一個預生成事件。如何升級包含在NuGet包中的* .props?

它通過指定包含每個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文件?

發生了什麼事?

+0

如果預生成事件已經存在,是否要覆蓋它? –

回答

1

我建議你不要在.props中使用prebuild事件,因爲我希望你不想覆蓋項目中現有的事件。

相反,你可以看看使用其他的目標,這樣你的邏輯使用BeforeTargets構建之前運行:

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

您可能也想看看使用DependsOnTargets如果你需要你的預編譯屬性事件在其他目標之後運行。

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

我們從未*需要在構建之前運行多個項目。但是,現在我已經說過了,這將成爲我們的常態。 :)我會試試這個報告。 – kettch

+0

它工作。謝謝! – kettch