16

Vấn đềTừng bước, làm cách nào để thêm bước xây dựng tùy chỉnh cho mỗi tệp của một loại nhất định trong Visual Studio 2010?

  1. tôi có một loạt các tập tin tùy chỉnh trong một dự án visual studio 2010.
  2. Tôi cần chạy công cụ trên các tệp tùy chỉnh đó khi chúng thay đổi.
  3. Công cụ tạo tệp .h được bao gồm bởi các tệp .cpp hiện có.
  4. Tôi muốn công cụ chạy như một phần của quá trình xây dựng.
  5. Nó cần phải chạy từ trong studio trực quan, nhưng lý tưởng cũng có thể chạy như một phần của quá trình msbuild.

hiện các giải pháp không đạt tiêu chuẩn

Trên mỗi tập tin, mỗi khi tôi thêm nó, tôi có thể đi đến các thiết lập tập tin, thiết lập các loại mục Custom Build Tool, và sau đó trong Tuỳ chỉnh xây dựng Công cụ đối thoại, thiết lập các tham số dòng lệnh, thiết lập các đầu ra (hardcoded), và thiết lập các phụ thuộc bổ sung (hardcoded).

Rõ ràng, đây là giải pháp kém vì đó là số lượng công việc không đáng kể và dễ bị lỗi mỗi khi bạn thêm tệp mới của loại tùy chỉnh.

Các giải pháp mong muốn

tôi thiết lập visual studio rằng đối với bất cứ tập tin của .foo mở rộng, nó chạy công cụ bar.exe, khi những thay đổi tập tin .foo, trước khi nó biên dịch mã CPP.

Những điều tôi đã cố gắng

Dựa trên điều này: http://msdn.microsoft.com/en-us/library/3e889s84(v=vs.100).aspx Tôi đã cố gắng để thiết lập một .targets và file .xml. Tuy nhiên, tôi không thể tìm ra cách tạo một Item Item mới như vậy cho thấy nó xuất hiện trong studio trực quan, và tôi cũng không thể tìm ra cách làm cho nó trở nên kỳ diệu áp dụng cho mọi file kiểu .foo. Ngày đầu đó, tôi đã không figured làm thế nào mà bất kỳ liên kết đến bất cứ điều gì mô tả các hành động gọi công cụ bar.exe của tôi.

Tôi đã cố gắng tìm kiếm trong tất cả các tệp xml/mục tiêu của studio trực quan để theo dõi các Loại mục hiện có và xác định cách chúng được dịch sang hành động xây dựng thực tế. Nó luôn luôn kết thúc tại bức tường của ItemType, nơi có một bó được mô tả trong ProjectItemsSchema, nhưng tôi không thể tìm thấy nơi chúng được thực hiện, hoặc làm thế nào tôi có thể thực hiện chúng bản thân mình.

Tài liệu của MSDN đã thất bại hoàn toàn và tôi nghĩ rằng tôi đã đọc tất cả các trang có liên quan có thể có mười lần, không có kết quả.

Trong visual studio 2008, tôi đã có loại điều làm việc với một tập tin .rules trông như thế này:

<?xml version="1.0" encoding="utf-8"?> 
<VisualStudioToolFile 
Name="Foo Build Rules" 
Version="8.00" 
> 
<Rules> 
    <CustomBuildRule 
     Name="FooBuild" 
     DisplayName="FooGen" 
     CommandLine="..\..\tools\FooGen.exe [inputs]" 
     Outputs="$(InputName).h" 
     AdditionalDependencies="*.foo" 
     FileExtensions="*.foo" 
     ExecutionDescription="Generating Foos..." 
     > 
     <Properties> 
     </Properties> 
    </CustomBuildRule> 
</Rules> 
</VisualStudioToolFile> 

Tuy nhiên, chức năng này đã bị phản đối trong năm 2010, và tôi đã không thể tìm ra làm thế nào để tái tạo nó với hệ thống mới.

Trợ giúp?

+0

Bạn đã kiểm tra điều này chưa? http://msdn.microsoft.com/en-us/library/xfsbz6cw(v=vs.100).aspx – hege

+0

Đó là những gì tôi đã sử dụng trong năm 2008. Chúng không còn hoạt động trong năm 2008. –

+0

Tôi cho rằng bạn phải đọc này cũng vậy: http://blogs.msdn.com/b/vcblog/archive/2010/04/21/quick-help-on-vs2010-custom-build-rule.aspx. Những gì bắt mắt của tôi là theo điều này, bạn cần một tập tin .props quá, có thể đó là những gì bạn đang mất tích. Đã không thử bản thân mình mặc dù .... – hege

Trả lời

7

Bắt đầu bằng cách thêm Nhóm mục tùy chỉnh vào tệp dự án của bạn.

Giống như dưới đây:

<ItemGroup> 
    <CustomBuild Include="faq.txt"> 
     <Message>Copying readme...</Message> 
     <Command>copy %(Identity) $(OutDir)%(Identity)</Command> 
     <Outputs>$(OutDir)%(Identity)</Outputs> 
    </CustomBuild> 
    </ItemGroup> 

Tiếp theo, tạo một đối tượng tùy chỉnh và xác định nơi trong quá trình xây dựng bạn muốn chạy các mục tiêu tùy chỉnh của bạn trong quá trình xây dựng.

Các liên kết dưới đây giải thích chi tiết hơn và từng bước.

Hy vọng điều này sẽ hữu ích.

Walk-through: Using MSBuild to Create a Visual C++ Project

How to: Add Custom Build Tools to MSBuild Projects

Note: Trong phiên bản hiện tại, IDE không hỗ trợ việc tạo ra các quy định mới. Vì lý do đó, cách dễ nhất để sử dụng tệp quy tắc từ một dự án đã được tạo bằng cách sử dụng phiên bản trước của Visual C++ là di chuyển dự án sang bản phát hành hiện tại.

+0

Tại sao bỏ phiếu xuống? – SoftwareCarpenter

+0

Trong ví dụ này, bước 'CustomBuild' chỉ áp dụng cho một tệp,' faq.txt'. OP muốn có một bước 'CustomBuild' chạy trên nhiều tệp như' * .foo'. –

+1

Chỉ cần theo dõi, 'CustomBuild' cũng có thể được sử dụng với các ký tự đại diện, do đó, sử dụng' 'hoạt động như mong đợi. Cảm ơn bạn. –

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