5

tôi tùy chỉnh dự án của tôi sử dụng một giải pháp tôi tìm thấy trong câu hỏi này:Bấm một lần xuất bản file addtional dừng lại với VS 2012

Why doesn't ClickOnce in Visual Studio deploy content files from dependent assemblies?

<ItemGroup> 
<AdditionalPublishFile Include="$(OutputPath)\**\*.rpt"> 
    <Visible>False</Visible> 
</AdditionalPublishFile> 
</ItemGroup> 
<Target Name="BeforePublish"> 
    <Touch Files="@(IntermediateAssembly)" /> 
    <CreateItem Include="@(AdditionalPublishFile)" AdditionalMetadata="TargetPath=%(RecursiveDir)%(Filename)%(extension);IsDataFile=false"> 
    <Output TaskParameter="Include" ItemName="_DeploymentManifestFiles" /> 
    </CreateItem> 
</Target> 

nó đã làm việc tốt với VS 2010, cho đến khi tôi nâng cấp lên VS 2012, các tệp bổ sung không được bao gồm trong tệp kê khai ứng dụng !! vì vậy khi người dùng cài đặt ứng dụng, các tệp được đề cập bị thiếu trong thư mục chính của ứng dụng.

điều gì đã thay đổi trong VS 2012? hoặc có thể thay đổi trong MSBuild?

EDIT:

tôi đã đề cập câu hỏi ban đầu mà từ tôi đã có ý tưởng, về cơ bản tôi đang sử dụng Dependency Injection để tải một số hội, có nghĩa là không có tài liệu tham khảo cứng giữa dự án của tôi và các hội đồng, do đó bấm-một lần triển khai sẽ không đi vào xem xét những hội đồng, mà buộc tôi hoặc thêm chúng vào dự án, hoặc sử dụng các giải pháp đã đề cập, tôi đã chọn giải pháp được đề cập vì nó là vô hình và dễ dàng.

nhưng nó đã bị hỏng sau khi chuyển sang VS 2012.

+0

Tại sao tất cả những câu hỏi về MSBuild không mất rằng có rất nhiều sự chú ý ?? –

+0

Rất vui khi tôi tìm thấy bài đăng này - Tôi sắp triển khai phương pháp này - http://blogs.msdn.com/b/mwade/archive/2008/06/29/how-to-publish-files-which-are-not -in-the-project.aspx – tofutim

+0

@tofutim Làm thế nào bạn có được điều này để làm việc, giải pháp này đã không làm việc cho tôi với MsBuild. –

Trả lời

1

tôi thấy câu hỏi của bạn khó hiểu bởi vì tôi chưa bao giờ thấy ai làm điều này với ClickOnce trước đây, vì vậy tôi đã nói chuyện với anh chàng ClickOnce tại Microsoft về nó. Anh ấy nói rằng những gì bạn đang làm nó không được hỗ trợ, vì vậy nó không phải là một cái gì đó họ sẽ thử nghiệm. Có nhiều thay đổi đối với msbuild có thể đã phá vỡ những gì bạn đang làm.

Có phải những gì bạn đang cố gắng thực hiện là nhận tệp được liên kết với tham chiếu phụ được bao gồm trong triển khai không? Nói cách khác, bạn có một dự án chính tham chiếu đến một assembly khác được tạo ra bằng cách xây dựng một dự án thứ hai, và assembly thứ hai có các tệp nội dung và bạn muốn chúng bao gồm trong dự án của bạn?

Nếu đó là những gì bạn đang cố gắng làm, bạn nên cân nhắc việc liên kết các tệp đó với dự án chính thay thế. Để làm điều đó, bạn có thể thêm một mục hiện có làm liên kết và trỏ nó vào nội dung trong dự án thứ hai. Sau đó, nội dung sẽ được đưa vào khi bạn xây dựng dự án đầu tiên.

+0

Cảm ơn Robin, tôi nghĩ không ai chú ý câu hỏi này :), tôi đã chỉnh sửa câu hỏi của mình để thêm chi tiết, Tuy nhiên, tôi không cố gắng liên kết các hội đồng như bạn gợi ý, nhưng tôi cảm thấy nó giống như thêm hội đồng trực tiếp đến dự án (không tham khảo). –

+0

Nó không giống nhau, bởi vì khi bạn liên kết với các hội đồng, nó sẽ nhận phiên bản mới khi bạn xây dựng chúng. Nếu bạn sao chép chúng vào dự án và thêm tài liệu tham khảo vào đó, chúng sẽ không được cập nhật trừ khi bạn cập nhật chúng. – RobinDotNet

+2

Có vẻ như ClickOnce và VS phải đối xứng trong việc nhận dạng các tệp nội dung từ hội đồng thứ hai. – tofutim

1

Move nhiệm vụ CreateItem sang bước BeforeBuild và loại bỏ các nhiệm vụ Touch:

<ItemGroup> 
    <AdditionalPublishFile Include="$(OutputPath)\**\*.rpt"> 
    <Visible>False</Visible> 
    </AdditionalPublishFile> 
</ItemGroup> 
<Target Name="BeforeBuild"> 
    <CreateItem Include="@(AdditionalPublishFile)" AdditionalMetadata="TargetPath=%(RecursiveDir)%(Filename)%(extension);IsDataFile=false"> 
    <Output TaskParameter="Include" ItemName="_DeploymentManifestFiles" /> 
    </CreateItem> 
</Target> 
Các vấn đề liên quan