Tại sao MSBuild tìm trong C: \ cho Microsoft.Cpp.Default.props thay vì c: \ Program Files (x86) \ MSBuild? (lỗi MSB4019)


124

Khi tôi chạy msbuild để xây dựng dự án vc2010, tôi gặp lỗi sau:

error MSB4019: The imported project "C:\Microsoft.Cpp.Default.props" was not found. 
Confirm that the path in the <Import> declaration is correct, and that the file exists 
on disk.
  • msbuild nằm ở c: \ Tệp chương trình (x86) \ MSBuild
  • HKLM \ SOFTWARE \ Wow6432Node \ Microsoft \ MSBuild \ ToolVersions \ V4.0 VCTargetPath được đặt thành $ (MSBuildExtensionsPath32) \ Microsoft.Cpp \ v4.0 \
  • khi chạy msbuild / verbosity: diag as system system show MSBuildExtensionsPath32, MSBuildExtensionsPath64, MSBuildExtensionsPath đặt làm Môi trường khi bắt đầu xây dựng
  • thiết lập MSBuildExtensionsPath32, MSBuildExtensionsPath64, MSBuildExtensionsPath đặt làm biến môi trường trong shell không khiến chúng hiển thị là Môi trường khi bắt đầu xây dựng

Bản sửa lỗi đã cố gắng

  • Đã gỡ cài đặt .net 4.5, đã sửa .net 4.0
  • Đặt MSBuildExtensionsPath32, MSBuildExtensionsPath64, MSBuildExtensionsPath trong các biến hệ thống.

Dường như MSBuildExtensionsPath32 không được đặt đúng cách và thiết lập MSBuildExtensionsPath không giúp ích gì

SET MSBuildExtensionsPath="C:\Program Files\MSBuild"

Vui lòng cho tôi biết nếu bạn có bất kỳ ý tưởng nào đang chặn cài đặt thích hợp của biến này.


6
Tuyệt quá! Một câu hỏi khác về lỗi xảy ra do cài đặt Visual Studio bị lỗi với hàng trăm cách giải quyết mà mỗi lỗi chỉ hoạt động trong một vài tình huống được chọn ...
Florian Winter

Câu trả lời:


75

Tôi gặp vấn đề này khi xuất bản ứng dụng cocos2d-x bằng công cụ dòng lệnh của họ, gọi là MSBuild. Tôi đang sử dụng Win 7 64-bit, VS2013 express, cocos2d-x phiên bản 3.3, .NET Framework 4.5 được cài đặt.

Tôi đã khắc phục sự cố bằng cách đặt các mục sau trước khi chạy lệnh xuất bản cocos.py:

SET VCTargetsPath=C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120

Điều này giúp tôi cài đặt gói nút oracledb. Tôi đã làm theo hướng dẫn trên Community.oracle.com/docs/DOC-931127 và thậm chí vì vậy tôi đã gặp lỗi MSB4019, tôi đã sửa lỗi với câu trả lời này.
Pedro Otero

1
Phiên bản PowerShell:[Environment]::SetEnvironmentVariable("VCTargetsPath", "C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140", "Machine")
fiat

Đã giúp với đường dẫn kết thúc bằng 'v4.0'
Alexander

50

Đối với những người không tuân theo lệnh đã đăng ký của MS (xem câu trả lời của Xv ), bạn vẫn có thể khắc phục sự cố.

MSBuild sử dụng VCTargetsPathđể định vị các thuộc tính cpp mặc định nhưng không thể vì registry thiếu Giá trị chuỗi này.

Kiểm tra giá trị chuỗi

  • Khởi chạy regedit
  • Điều hướng đến HKLM\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0
  • Kiểm tra VCTargetsPathchìa khóa. Giá trị nên = " $(MSBuildExtensionsPath32)\Microsoft.Cpp\v4.0\"

Sửa chữa

  • Khởi chạy regedit Navigator để HKLM\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0
  • Thêm giá trị chuỗi VCTargetsPath
  • Đặt giá trị thành " $(MSBuildExtensionsPath32)\Microsoft.Cpp\v4.0\"

Lưu ý: HKLMlà viết tắt của HKEY_LOCAL_MACHINE.


12
Các mục đăng ký đã có sẵn cho tôi. Tôi đã phải xác định một biến môi trường với tên đó được đặt thành giá trị trong sổ đăng ký để vượt qua biến đó:set VCTargetsPath=c:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0
elmotec 20/03/2015

12
đối với tôi nó chỉ hoạt động với bộ nàyVCTargetsPath=c:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\v120
ygaradon

1
@ cmm-user HKLM là viết tắt của HKEY_LOCAL_MACHINEbạn chắc chắn nên có nó trong regedit
Michael Johnston

4
VCTargetPath không phải là khóa, mà là Giá trị chuỗi!
John Smith

5
Đối với tôi bây giờset VCTargetsPath=c:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\v140
Daniel Gray

26

Tôi đã có cùng một vấn đề gần đây và sau khi cài đặt các gói khác nhau theo thứ tự khác nhau, nó đã trở nên rất lộn xộn. Sau đó, tôi đã tìm thấy repo này - https://github.com/felixrieseberg/windows-build-tools

npm install --global windows-build-tools

Nó cài đặt các công cụ Python & VS Build được yêu cầu để biên dịch hầu hết các mô-đun nút. Nó đã làm việc một điều trị!


1
Điều tốt nhưng không hoạt động cho Azure không may.
Aleksey Kontsevich

6
Đối với những người có thể có một vấn đề như tôi. Tôi cần --productiontùy chọn. npm install --global --production windows-build-tools Theo hướng dẫn cài đặt nút-gyp: github.com/nodejs/node-gyp
eliotRosewater

15

Dành cho Visual Studio 2017 và 2019 trên Windows 10

Rất nhiều câu trả lời ở đây áp dụng cho các phiên bản cũ hơn của Visual Studio. Điều làm việc cho tôi, nếu sử dụng phiên bản Cộng đồng Visual Studio 2017, là đặt một biến môi trường được gọi VCTargetsPathvà cung cấp cho nó một giá trị là

C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets

Nếu sử dụng phiên bản Cộng đồng Visual Studio 2019,

C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160

Các câu trả lời khác ở đây đặt biến này thành c:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\v140nhưng tôi nhận thấy trong cài đặt phòng thu trực quan của mình, không có thư mục nào được gọi là Microsoft.Cpp trong thư mục MSBuild của tôi. Vì vậy, hãy ghi nhớ điều này cũng như thực tế rằng con đường trên dành cho phiên bản Cộng đồng của Visual Studio 2017.

Ngoài ra, hãy đảm bảo rằng đường dẫn MSBuild trong các biến môi trường của bạn trỏ đến phiên bản MSBuild chính xác nếu bạn đang sử dụng phiên bản Cộng đồng Visual Studio 2017,

C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin

Nếu bạn đang sử dụng phiên bản Cộng đồng Visual Studio 2019,

C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin

1
Trong tôi, VCTargetPath là C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ BuildTools \ Common7 \ IDE \ VC \ VCTarget
Madura Pradeep

1
Nó cũng có thể là Microsoft Visual Studio\2019\BuildToolshoặc các biến thể tương tự - và tôi cho rằng thay vì BuildTools và Cộng đồng, bạn cũng có thể có Chuyên gia và Doanh nghiệp. vswhere.exe -products * -property installationPathsẽ tìm kiếm tất cả các kết hợp và trả về vị trí của tất cả các sản phẩm đã cài đặt.
MSalters

1
'vswhere.exe' is not recognized as an internal or external command, operable program or batch file.
Andrew Koster

13

Cài đặt Cập nhật trình biên dịch Microsoft Visual C ++ 2010 Gói dịch vụ 1 cho Windows SDK 7.1 đã sửa các MSB4019lỗi mà tôi đang xây dựng trên Windows7 x64.

Readme của bản cập nhật đó nói rằng thứ tự được đề xuất là

  1. Studio hình ảnh 2010
  2. SDK Windows 7.1
  3. Visual Studio 2010 SP1
  4. Cập nhật trình biên dịch Visual C ++ 2010 SP1 cho Windows SDK 7.1

Ồ được thôi. Tôi đã tìm ra cách khắc phục cho việc này. Thêm vào khóa đăng ký bị thiếu. Tôi sẽ đăng nó và cập nhật tài liệu thiết lập của mình để thực hiện theo thứ tự này
Peter Kahn

6

Trên các hệ thống 64 bit, MSBuild mặc định cho các thuộc tính sau (trong đó C: là SystemDrive):

MSBuildExtensionsPath = C:\Program Files (x86)\MSBuild
MSBuildExtensionsPath32 = C:\Program Files (x86)\MSBuild
MSBuildExtensionsPath64 = C:\Program Files\MSBuild

Nếu không, điều đó có nghĩa là bạn đã cài đặt một số mục tiêu tùy chỉnh của bên thứ ba hoặc cài đặt MSBuild của bạn bị hỏng.

Những điều cần thử:

  • Sửa chữa cài đặt .NET
  • Áp dụng gói dịch vụ Visual Studio mới nhất
  • Đặt MSBuildExtensionsPaththủ công như trên (lưu ý x86phần trên máy 64 bit)

2
Cảm ơn nhưng những điều đó vẫn chưa được đặt sau: 1) repaire .net 4.5, 2) gỡ cài đặt .net 4.5 và sửa chữa 4.0. Nếu tôi đặt chúng theo cách thủ công trong môi trường thì nó cũng không hoạt động
Peter Kahn

5

Tôi đã có vấn đề này trên phiên bản Visual Studio 2015. Khi tôi sử dụng cmake để tạo dự án, lỗi này xuất hiện.

lỗi MSB4019: Không tìm thấy dự án đã nhập "D: \ Microsoft.Cpp.Default.props"

Tôi đã sửa nó bằng cách thêm String

VCT TargetPath

có giá trị

$ (MSBuildExtensionsPath32) \ Microsoft.Cpp \ v4.0 \ V140

trong đường dẫn đăng ký

HKLM \ PHẦN MỀM \ Microsoft \ MSBuild \ ToolsVersions \ 14.0


Thực hiện điều này. Đã khởi động lại cmd sau, nhưng không khắc phục được sự cố.
Dan

4

MSBuild trong một công cụ xây dựng độc lập thường được gói cùng với các công cụ khác. Nó có thể đã được cài đặt trên máy tính của bạn với .NET (phiên bản cũ hơn), Visual Studio (phiên bản mới hơn) hoặc thậm chí Team Foundation Build.

MSBuild cần các tệp cấu hình, trình biên dịch, v.v (Bộ công cụ) phù hợp với phiên bản Visual Studio hoặc TFS sẽ sử dụng nó, cũng như phiên bản .NET dựa vào mã nguồn nào sẽ được biên dịch.

Tùy thuộc vào cách MSBuild được cài đặt, các tệp cấu hình có thể nằm trong một hoặc nhiều đường dẫn này.

  • C: \ Tệp chương trình (x86) \ MSBuild \ Microsoft.Cpp \ v4.0 \
  • C: \ Tệp chương trình (x86) \ MSBuild \ Microsoft.Cpp \ v4.0 \ V120 \
  • C: \ Tệp chương trình (x86) \ MSBuild \ Microsoft.Cpp \ v4.0 \ V140 \

Như được mô tả trong các câu trả lời khác, một mục đăng ký và / hoặc điểm biến môi trường phải theo đường dẫn của Bộ công cụ.

  • Khóa VCTargetPath trong HKLM \ SOFTWARE \ Microsoft \ MSBuild \ ToolsVersions \ 4.0
  • Biến môi trường VCTargetPath.

Đôi khi, một hoạt động như cài đặt một công cụ sẽ để đăng ký và / hoặc biến môi trường được đặt không chính xác. Các câu trả lời khác là tất cả các biến thể về sửa chữa chúng.

Điều duy nhất tôi phải thêm là biến môi trường không hoạt động với tôi khi tôi rời khỏi dấu vết \


Điều này! Chúng tôi đã gặp sự cố về đại lý xây dựng của mình khi không cài đặt đầy đủ VS2017. Chúng tôi đã cài đặt lại "Khối lượng công việc" với một bộ công cụ VC cụ thể - không phải là thành phần riêng lẻ và nó đã cài đặt đúng. Chúng tôi nghi ngờ trình cài đặt Visual Studio đã không đặt đúng bộ công cụ v141 dưới VS2017 trong quá trình cài đặt lựa chọn thành phần tùy chỉnh của chúng tôi.
Lars Pellarin

Đối với tôi, điều này đã giúp khắc phục nó - một tập lệnh mà tôi đang sử dụng là "hữu ích" khi tìm sai msbuild.exe và gọi nó một cách rõ ràng.
Scovetta

4

Các mục đăng ký cho khóa MSBuild hoạt động tốt với tôi. Điều quan trọng cần nhớ là nó phải được thực hiện cho các nhánh 64 bit hoặc 32 bit tùy thuộc vào phiên bản MSBuild bạn chạy. Tôi không khuyên bạn nên sử dụng các biến môi trường vì nó có thể gây ra sự cố trong các phiên bản khác nhau của MSBuild.

Tệp đăng ký này sửa lỗi cho cả hai trường hợp:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\MSBuild\ToolsVersions\14.0]
"VCTargetsPath"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V140\\'))"
"VCTargetsPath10"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath10)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\'))"
"VCTargetsPath11"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath11)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V110\\'))"
"VCTargetsPath12"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath12)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V120\\'))"
"VCTargetsPath14"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath14)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V140\\'))"

[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\MSBuild\ToolsVersions\14.0\10.0]
"VCTargetsPath"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\'))"

[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\MSBuild\ToolsVersions\14.0\11.0]
"VCTargetsPath"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V110\\'))"
"VCTargetsPath10"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath10)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\'))"
"VCTargetsPath11"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath11)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V110\\'))"

[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\MSBuild\ToolsVersions\14.0\12.0]
"VCTargetsPath"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V120\\'))"
"VCTargetsPath10"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath10)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\'))"
"VCTargetsPath11"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath11)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V110\\'))"
"VCTargetsPath12"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath12)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V120\\'))"

[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\MSBuild\ToolsVersions\14.0\14.0]
"VCTargetsPath"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V140\\'))"
"VCTargetsPath10"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath10)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\'))"
"VCTargetsPath11"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath11)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V110\\'))"
"VCTargetsPath12"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath12)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V120\\'))"
"VCTargetsPath14"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath14)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V140\\'))"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\14.0]
"VCTargetsPath"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V140\\'))"
"VCTargetsPath10"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath10)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\'))"
"VCTargetsPath11"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath11)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V110\\'))"
"VCTargetsPath12"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath12)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V120\\'))"
"VCTargetsPath14"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath14)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V140\\'))"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\14.0\10.0]
"VCTargetsPath"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\'))"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\14.0\11.0]
"VCTargetsPath"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V110\\'))"
"VCTargetsPath10"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath10)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\'))"
"VCTargetsPath11"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath11)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V110\\'))"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\14.0\12.0]
"VCTargetsPath"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V120\\'))"
"VCTargetsPath10"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath10)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\'))"
"VCTargetsPath11"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath11)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V110\\'))"
"VCTargetsPath12"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath12)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V120\\'))"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\14.0\14.0]
"VCTargetsPath"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V140\\'))"
"VCTargetsPath10"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath10)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\'))"
"VCTargetsPath11"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath11)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V110\\'))"
"VCTargetsPath12"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath12)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V120\\'))"
"VCTargetsPath14"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath14)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V140\\'))"

3

Không có gì khác làm việc cho tôi ngoại trừ, thiết lập đường dẫn là:

C:\Program Files\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0

Tôi nên đặt con đường nào?
Nageshwar Reddy Pandem

3

EDIT: Điều này áp dụng cho các phiên bản cũ hơn của Visual Studio / MSBuild (cụ thể là MSVC2015?). Với các phiên bản hiện đại hơn, MSBuild được đưa vào Visual Studio Build Tools 2019 và trình biên dịch được đặt ở những nơi khác nhau và được phát hiện theo những cách khác nhau.

Điều này là do sự không phù hợp của bộ công cụ MSBuild đã cài đặt và cài đặt đăng ký. Nó có thể xảy ra nếu bạn đã làm một hoặc nhiều điều sau đây:

  • Cài đặt nhiều phiên bản Visual Studio theo thứ tự sai
  • Gỡ cài đặt một hoặc nhiều phiên bản Visual Studio
  • Tự thực hiện thay đổi sổ đăng ký hoặc sửa đổi cài đặt Visual Studio

Giải pháp an toàn và đáng tin cậy duy nhất là cài đặt lại hệ điều hành của bạn. Nếu dự án của bạn cần nhiều phiên bản Visual Studio để xây dựng, trước tiên hãy cài đặt phiên bản cũ nhất . Sau đó sửa mã của bạn để bạn có thể sử dụng một công cụ duy nhất để xây dựng mã, hoặc bạn hoặc đồng nghiệp của bạn sẽ lại gặp rắc rối một lần nữa.

Nếu đây không phải là một lựa chọn cho bạn, trước tiên hãy đọc https://stackoverflow.com/a/41786593/2279059 để hiểu rõ hơn về vấn đề và những "giải pháp" khác nhau thực sự làm gì. Sau đó, tùy thuộc vào phiên bản Visual Studio và thiết lập của bạn, một trong những câu trả lời hoặc biến thể khác của chúng cuối cùng có thể giúp ích.

Một số gợi ý khác:


2

Cài đặt Cập nhật trình biên dịch Microsoft Visual C ++ 2010 Gói dịch vụ 1 cho Windows SDK 7.1 hoạt động với tôi. Tuy nhiên, tôi gặp sự cố với bản cập nhật vì tôi đã cài đặt VS 2010 và VS 2010 SP1. Như Xv đã đề cập ở trên, tệp readme.htm chứa các giải pháp cho các sự cố cài đặt phổ biến nhất trong phần "Các vấn đề đã biết". Tôi sẽ làm theo các hướng dẫn trong readme.htm và khởi động lại máy của bạn sau mỗi lần thử khắc phục sự cố vì một số cài đặt ghi vào sổ đăng ký của bạn.


2

Trong trường hợp của tôi, tôi đã thêm một biến Môi trường VCTargetPathvới đường dẫn

"C: \ Tệp chương trình (x86) \ Microsoft Visual Studio \ 2017 \ Professional \ Common7 \ IDE \ VC \ VCTarget \"

('\' ở cuối là rất quan trọng, vì các tệp giải pháp dự án có tham chiếu đến tệp "Microsoft cpp Target".

Ngoài ra, bắt đầu từ Visual Studio 2017 MSBUILD xuất hiện trong Visual Studio - vì vậy, PATH variablecần phải cập nhật với

C: \ Tệp chương trình (x86) \ Microsoft Visual Studio \ 2017 \ Professional \ MSBuild \ 15.0 \ Bin

Cập nhật VCTargetPathPATHcác biến của MSBUILD và xây dựng đã sửa lỗi.


0

Tôi đã gặp phải lỗi này bằng cách viết tập lệnh Build sẽ đặt MSBuild lên% PATH% sau khi đào đệ quy qua thư mục C: \ Windows \ Microsoft.NET cho bất kỳ tệp MSBuild.exe nào được tìm thấy. Lần tìm thấy cuối cùng là thư mục được đặt trên đường dẫn. Vì dirlệnh sẽ đánh vào Framework64thư mục sau khi Frameworktôi nhận được một trong những MSBuild 64 bit được đặt trên đường dẫn của tôi. Tôi đã cố gắng xây dựng một giải pháp Visual Studio 2010 và cố gắng thay đổi chuỗi tìm kiếm của mình C:\Windows\Microsoft.NETđể C:\Windows\Microsoft.NET\Frameworktôi có thể sử dụng MSBuild.exe 32 bit. Bây giờ tập tin giải pháp của tôi xây dựng.


0

Tôi chỉ thêm vào VCTargetsPath={c:\...}như một biến môi trường cho công việc Hudson của tôi.


0

Đối với bản ghi, tệp Microsoft.Cpp.Default.propscó thể sửa đổi var env VCTargetsPathvà làm cho các lần sử dụng tiếp theo của var đó không chính xác. Tôi đã có vấn đề đó và giải quyết nó bằng cách thiết lập VCTargetsPath10VCTargetsPath11có cùng giá trị hơn VCTargetsPath.

Điều này nên được điều chỉnh theo phiên bản VS bạn đang sử dụng.


0

Tôi đang thấy điều này trong môi trường VS2017. Tập lệnh xây dựng của tôi gọi VsDevCmd.battrước và để giải quyết vấn đề này, tôi đặt VCTargetsPathbiến môi trường sau VsDevCmdvà trước khi gọi MSBuild:

set VCTargetsPath=%VCIDEInstallDir%VCTargets

0

Thêm vào câu trả lời của Chris Gong về VS2017 / 2019 ở trên (Tôi chưa có quyền nhận xét).

Nếu Công cụ xây dựng VS 2019 được cài đặt thay vì Visual Studio đầy đủ thì đường dẫn tệp hơi khác nhau. VCT TargetPath sau đó sẽ là

C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\

Cũng lưu ý dấu gạch chéo ngược chấm dứt - ít nhất là bắt buộc trong trường hợp của tôi (công cụ xây dựng TFS2017, VS2019). Thay đổi tương ứng với mục PATH là tốt.


0

Tôi đã phải đối mặt với cùng một vấn đề với MSBuild cho VS 17

Tôi đã giải quyết điều này bằng cách áp dụng các bước sau:

  • Trong trường hợp của tôi, Microsoft.Cpp.Default.propstệp được đặt tại C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\IDE\VC\VCTargets đó vì vậy tôi đã tạo VCTragetsPathchuỗi trong sổ đăng ký HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0với giá trị C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\IDE\VC\VCTargets

  • Tôi cũng đã làm cho Jenkins của tôi chạy như một người dùng quản trị

Điều này đã giải quyết vấn đề của tôi.


0

Thay vì đặt một đường dẫn cố định, hãy thử điều này trong dòng lệnh sau khi xây dựng của bạn:

SET VCTargetsPath=$(VCTargetsPath)

Biến '$ (VCTargetPath)' dường như là một macro-studio-macro liên quan đến c ++ không được hiển thị trong c # -sdk-dự án dưới dạng macro nhưng vẫn có sẵn ở đó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.