22

Tôi đã cài đặt Visual Studio 2010 SP1 vào ngày khác và bây giờ khi tôi cố gắng "xuất bản" ứng dụng của mình, tôi gặp lỗi này trên TẤT CẢ các dự án của tôi.Mục tiêu "_CopyBinDeployableAssemblies" không tồn tại trong dự án

The target "_CopyBinDeployableAssemblies" does not exist in the project. 

Tôi không biết vấn đề là gì và tôi không tìm thấy gì trên Google hùng mạnh và điều đó khiến tôi hơi lo lắng.

Có ai có thể chỉ cho tôi đúng hướng ở đây hoặc có thể ai đó khác có cùng vấn đề? Bởi vì nó xảy ra trong tất cả các dự án của tôi nên tôi hơi ngạc nhiên một mình với vấn đề này.

Các trang web là ứng dụng web ASP.NET, một số trong số đó là các biểu mẫu Web hỗn hợp/MVC nhưng một trong số đó chỉ là Biểu mẫu web. 1 trang web là siêu mega đơn giản với hầu như không có tài liệu tham khảo và tôi vẫn nhận được lỗi.

+0

gói dịch vụ vẫn đang trong giai đoạn Beta. Bạn có thể báo cáo lỗi tại connect.microsoft.com –

+0

Yea, tôi biết. Tôi đăng một câu trả lời dưới đây vì vậy bây giờ có một số tham chiếu đến vấn đề này trên google ít nhất. – Olaj

+4

Chúng tôi đã gặp sự cố tương tự với bản phát hành cuối cùng của Gói Dịch vụ 1. –

Trả lời

44

Tôi cũng gặp phải sự cố này sau khi cài đặt Visual Studio 2010 SP1 Beta.

Mục tiêu thiếu _CopyBinDeployableAssemblies được quy định tại:

$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets 

tôi giải quyết vấn đề bằng cách thêm một yếu tố <Import> để các tập tin dự án bị phá vỡ.

Vì vậy, nếu bạn có một depdendency vào các mục tiêu trên, mà bạn có thể tìm hiểu bằng cách tìm kiếm các <Import> sau trong file dự án của bạn:

<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.targets" /> 

Bạn cần phải cũng nhập khẩu:

<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" /> 
+6

Nếu (như chúng tôi) bạn đang chạy một hỗn hợp của RTM và SP1b bạn có thể bao gồm import với điều kiện = "Exists ('$ (MSBuildExtensionsPath) \ Microsoft \ VisualStudio \ v10.0 \ WebApplications \ Microsoft.WebApplication.targets')" sẽ ngăn lỗi cho những người không cài đặt SP. – Ash

+0

Cảm ơn @Ragge và @Ash! –

+2

Giải pháp trên là giải pháp đúng và sau đây sẽ hoạt động đối với phiên bản 64 bit cũng như 64 bit. Elangesh

0

Vâng, đã dành 4h vào ngày hôm nay và tôi đã giải quyết ngay bây giờ. Nhưng tiếc là tôi không có một câu trả lời rõ ràng vấn đề là gì. Buit i sẽ mô tả những gì tôi đã làm.

  1. Gỡ cài đặt SP 1 và gặp lỗi. Những nơi mà vì tôi không có phương tiện cài đặt VS và nó nơi yêu cầu nó.
  2. SP1 dường như đã bị xóa nhưng tôi vẫn gặp lỗi.
  3. Đã tải xuống bản dùng thử VS Ultimate và cố gắng sửa chữa, không giúp ích gì.
  4. Đã tải xuống lại VS 2010 SP1 và cài đặt nó. Vẫn còn cùng một vấn đề.
  5. Gỡ cài đặt VS SP1 với quyền truy cập vào phương tiện cài đặt VS Ultimate và tôi chỉ gặp phải một lỗi khi cần một số công cụ VS Express, tôi nhấn hủy trên công cụ đó và gỡ cài đặt thất bại.
  6. Khởi chạy Visual Studio và sự cố đã biến mất! Hallelujah!

Và tốt, tôi không đổ lỗi cho MS về điều này. Tôi biết nó ở đâu một phiên bản beta nhưng tôi chưa bao giờ có vấn đề như thế này trước đây.

Hy vọng điều này sẽ giải quyết được vấn đề cho người khác.

1

Câu trả lời được đưa ra ở trên bởi Ragge là những gì tôi cần. Nhưng trong trường hợp của tôi, tôi chỉ thêm dòng thứ hai. Dòng đầu tiên mà Ragge đưa ra đã có trong tệp dự án.

<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" /> 
4

Từ joao-angelo 's blog post, thêm dòng sau vào hồ sơ dự án (csproj/.vbproj)

<Target Name="Noop"></Target> 

<PropertyGroup> 
    <CollectFilesFrom_binDeployableAssembliesDependsOn> 
    Noop 
    </CollectFilesFrom_binDeployableAssembliesDependsOn> 
</PropertyGroup> 

trước khi nhập

<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.targets" /> 

đó làm việc cho tôi sử dụng ClickOnce trên VS2010 SP1 sử dụng App.config transform

0

Câu trả lời Ragge cũng đã làm việc cho chúng tôi. Tôi đã có một giải pháp mà tôi đã không mở kể từ khi cài đặt SP1 mà chỉ từ chối xây dựng với cùng một lỗi. Đã chỉnh sửa tệp dự án trong Notepad để bao gồm hai câu lệnh và viola đó! vấn đề được giải quyết. Cảm ơn rất nhiều vì sự tích cực của bạn!

Ngoài ra: Một đồng nghiệp đề cập rằng việc bổ sung quá trình nhập sẽ gây ra các bản dựng xảy ra bên ngoài Visual Studio để có thể khiếu nại (Command line msbuild, build server) vì Microsoft.WebApplication.targets không tồn tại ở đó. Vì vậy, chúng tôi đã thay đổi dòng nhập để đọc:

<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="$(BuildingInsideVisualStudio) == true AND exists('$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets')" /> 

Những điều kiện này rất quan trọng đối với bản dựng của chúng tôi khi chúng tôi triển khai bằng máy chủ xây dựng và msdeploy.

0

undeploy dự án và chỉnh sửa và thêm đoạn mã sau vào tập tin dự án vào cuối <Import>

<Target Name="_CopyBinDeployableAssemblies" 
     Condition="Exists('$(MSBuildProjectDirectory)\_bin_deployableAssemblies')"> 
    <CreateItem Include="$(MSBuildProjectDirectory)\_bin_deployableAssemblies\**\*.*" 
      Condition="Exists('$(MSBuildProjectDirectory)\_bin_deployableAssemblies')" 
      Exclude="$(MSBuildProjectDirectory)\_bin_deployableAssemblies\.svn\**\*"> 
     <Output ItemName="_binDeployableAssemblies" TaskParameter="Include" /> 
    </CreateItem> 
    <Copy SourceFiles="@(_binDeployableAssemblies)" 
      DestinationFolder="$(OutDir)\%(RecursiveDir)" SkipUnchangedFiles="true" 
      Retries="$(CopyRetryCount)" 
      RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)" /> 
</Target> 
1

Hoho, Jacob là đúng!

Khi chúng ta cài đặt VS 2010 SP1 mặc định MSBuild con đường sẽ tập trung vào thư mục

[C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v11.0]

không

[C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v10.0] nữa.

Và tệp [Microsoft.WebApplication.targets] có mục tiêu xây dựng có tên [_CopyBinDeployableAssemblies].

Vì vậy, chúng ta chỉ cần thêm một [_CopyBinDeployableAssemblies] mục tiêu để tập tin dự án của chúng tôi (có thể mở nó bằng Notepad :)) , vấn đề đã được giải quyết

Ex: <Target Name="_CopyBinDeployableAssemblies"></Target>. Chỉ cần một mục tiêu rỗng :)

0

Đó là VS 2013 SP 3 và tôi vẫn gặp sự cố này! Để khắc phục nó tôi đã phải thay đổi dòng sau trong thất bại để xây dựng các dự án từ:

<Import Project="$(VSToolsPath)\Web\Microsoft.Web.Publishing.targets" Condition="'$(VSToolsPath)' != ''" /> 

đến dòng sau:

<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />