2012-11-08 41 views

Trả lời

18

Tôi nghĩ rằng việc chỉnh sửa thuộc tính PostBuildEvent của người dùng là sai cách để thêm hành động sau xây dựng cho dự án. Tôi tin rằng cách được khuyến nghị là đặt hành động tùy chỉnh của bạn vào một Mục tiêu MSBuild được nhập vào tệp dự án. Kể từ NuGet 2.5, nếu bạn bao gồm thư mục 'build' trong gói của mình (cùng cấp với nội dung và công cụ) và nó chứa tệp {packageid} .targets hoặc {packageid} .props, NuGet sẽ tự động thêm Nhập vào tệp dự án khi bạn cài đặt gói.

Ví dụ: bạn có gói có tên là MyNuGet. Bạn tạo tệp xây dựng \ MyNuGet.targets chứa:

<?xml version="1.0" encoding="utf-8" ?> 
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <Target Name="MyNuGetCustomTarget" AfterTargets="Build"> 
     <Message Importance="high" Text="Message from MyNuGetCustomTarget. Configuration: $(Configuration)" /> 
    </Target> 
</Project> 

Điều này tạo mục tiêu tùy chỉnh được định cấu hình để chạy sau mục tiêu Xây dựng chuẩn. NuGet sẽ xử lý việc chèn Nhập khi cài đặt và xóa nó khi gỡ cài đặt.

+0

không thấy mục nhập được thêm vào dự án sau khi cài đặt nhưng chúng được gọi. TY TNHH – workabyte

6

Không phải tệp .nuspec, nhưng bạn có thể tới install.ps1 mà bạn có thể thêm vào gói của mình bằng nuspec. Đây là những gì tôi đang làm (Tôi không biết nếu đó là cách tốt nhất để làm điều đó nhưng nó không hoạt động):

param($installPath, $toolsPath, $package, $project) 

$project.Properties | where { $_.Name -eq "PreBuildEvent" } | foreach { $_.Value = "copy `"`n`$(ProjectDir)Web.`$(ConfigurationName).config`" `"`$(ProjectDir)Web.config`"" } 
+0

Điều đó có vẻ thú vị, tôi sẽ dùng thử! –

+0

u có thể giúp tôi giải quyết http://stackoverflow.com/questions/25840375/how-to-add-prebuildevent-in-install-ps1-in-nuget – IloveIniesta

8

Đây là một cách gọn nhẹ hơn để thiết lập sự kiện xây dựng từ install.ps1 kịch bản PowerShell trong Gói NuGet:

$project.Properties.Item("PostBuildEvent").Value = "your build event here" 
+0

u có thể giúp tôi giải quyết vấn đề này không? Http: //stackoverflow.com/questions/25840375/how-to-add-prebuildevent-in-install-ps1-in-nuget – IloveIniesta

Các vấn đề liên quan