问题标签 [vcxproj]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
534 浏览

visual-studio - Visual Studio 项目属性中缺少项目 vcpkg 设置

我的 vcxproj 之一(带有 vcpkg.json)看起来像这样 现存的

另一个(带有 vcpkg.json)看起来像这样。请注意缺少的选项。

在此处输入图像描述

但是我需要能够启用 vcpkg Manifest 以便它可以编译!我被卡住了,这个选项去哪儿了?两个项目都在同一个解决方案中。两者都将 vcpkg.json 添加到其源文件中。值得注意的是,一个具有不同的目录结构(proj/proj.vcproj 与 proj/build/proj.vcproj),因此 vcpkg.json 离得更远

作为设计说明,有条件的隐藏选项或灰色选项是一种反模式。

0 投票
1 回答
108 浏览

c++ - BuildMacro 元素在 Visual Studio 属性和项目中的作用是什么?

我已经看过好几次了:

这与仅定义属性有何不同?令我惊讶的是,这个词在 MSDN 上只有三个结果,而且只有一个是英文的。一个结果并没有真正帮助我理解上面的结构。

0 投票
1 回答
39 浏览

visual-studio - Clearcase - 将两个文件合并为一个具有统一历史记录的文件

我有两个不同的文件,每个文件都有自己的历史,我想将它们合并为一个,但保留两个历史。

例如(我的实际问题):在从旧的视觉工作室转换到新的视觉工作室之后,我有x.vcprojand x.vcxproj(我什至不记得这些是哪些了)。基本上在转换之后,我们一起停止使用旧格式。

那时应该做的是编写一个遍历所有转换项目的脚本(在向 clearcase 添加任何内容之前):

  • 签出 x.vcproj及其包含的文件夹。
  • 重命名x.vcxproj为一些临时文件,比如说x.vcxproj.temp
  • 用于cleartool重命名x.vcprojx.vcxproj
  • x.vcxproj_x.vcxproj.temp
  • 签入x.vcxproj文件。

这在当时就可以做到,但还没有做到,现在大多数<Project Name>.vcxproj已经有了自己的广泛历史。

这两个文件的历史可以统一起来,还有一些如何模拟上述流程?

视觉示例:

从:

我想得到以下结果树:

0 投票
0 回答
186 浏览

c++ - .vcxproj 文件的导入声明导致 Visual Studio 2019 中的错误

此行在 .vcxproj 文件中出现两次: <Import Project="$(SolutionDir)\$(SolutionName).props" />

在 VS2019 中加载解决方案时似乎导致此 QT 错误:

ProjectName .vcxproj:后台构建错误:未找到导入的项目“C:\Users\...\ProjectFolder\.props”。确认导入声明“C:\Users\...\ProjectFolder\.props”中的表达式正确,并且该文件存在于磁盘上。C:\Users\...\ProjectFolder\ProjectName.vcxproj

第一个问题:我注意到错误在第二个目录上有两个反斜杠。我阅读了$(ProjectDir)返回尾随反斜杠的 Microsoft Docs,因此我删除了导入声明中的那个,它只留下一个反斜杠。

主要问题:删除反斜杠后,宏似乎$(SolutionName)返回一个空/空字符串,导致 QT 尝试加载“.props”。有趣的是,如果您在宏的左侧或右侧(在导入声明中)键入 ANY 文本,它会按预期返回适当的解决方案名称,但附加文本会弄乱路径。删除该文本并重新加载 VS,它会返回一个空字符串。例如:

$(SolutionDir)$(SolutionName)asdf.props导致“C:\Users\...\ProjectFolder\ProjectNameasdf.props 未找到”

$(SolutionDir)asdf$(SolutionName).props导致“C:\Users\...\ProjectFolder\asdfProjectName.props 未找到”

$(SolutionDir)$(SolutionName).props导致“C:\Users\...\ProjectFolder\.props 未找到”

在“属性页”>“可执行目录”>“宏”窗口中,所有内容都按应有的方式定义。我已经没有想法了

我试过的:

  • 使用$(ProjectDir)\$(ProjectName)(同样的错误)
  • 使用$(MSBuildProjectDirectory)\$(SolutionName)(同样的错误)
  • 使用..\..\将其指向道具文件(同样的错误)
  • 添加Condition="Exists('$(SolutionDir)\$(SolutionName).props')"到导入标签中(将错误更改为“ ProjectName .vcxproj background build FAILED!”)
  • 完全删除进口申报
  • 阅读并尝试所有现有的 StackOverflow 帖子,甚至是远程相关的

其他信息:

  • 项目从VS 2017转移到2019
  • 该项目涉及嵌套在一个父解决方案中的多个解决方案
  • 父解决方案下的每个解决方案都会引发两次此错误,我相信每个涉及的 Import Declaration 都会发生一次$(SolutionDir)$(SolutionName)
  • 如前所述,该项目涉及 QT
  • 每个子解决方案都指向一个父解决方案的 .props 文件
  • 项目在这些错误之后继续,并且正常运行,没有进一步的错误。但是我担心它可能会在以后引起问题,并且为了完整起见想要清除它。
0 投票
1 回答
73 浏览

msbuild - 如何检查字符串是否包含msbuild中的字符串?

我在为我的项目编写targets文件时遇到问题。vcxproj在我的targets文件中,我首先要根据配置设置一些构建属性,所以我有这个:

但是当我尝试使用导入的目标文件打开项目时出现错误

我正在使用 Visual Studio 2022 预览版。根据MSBuild 文档,字符串只是一个 .Net5 字符串,应该有方法。有人可以帮我吗?

0 投票
1 回答
121 浏览

c++ - 如何构建混合的 NET5.0 和 C/C++ 解决方案?

我正在将我的 .net 框架项目转换到 NET5.0,并且已经完成了代码/依赖项的更新,以便它全部在 Visual Studio 中编译和运行,但现在我在更新我的构建脚本时遇到了问题。我以前使用“msbuild”来构建解决方案,它将在解决方案文件中构建我的所有项目和我的 C/C++ vcxprojs。“msbuild”命令不适用于现在的 NET5.0 项目,所以我尝试使用“dotnet build”和“dotnet publish”来构建我的项目,但这些不能构建 C/C++ 项目。所以从逻辑上讲,我接下来尝试在“dotnet publish”之前专门构建那些 C/C++ 项目。我通过提供特定 .vcxproj 文件而不是 .sln 文件作为项目参数的“msbuild”来做到这一点,

有没有其他人成功构建包含 dotnet core/net5.0 项目和 C/C++ 项目的混合解决方案?

我尝试的方法是否正确(首先构建 C/C++ 项目,然后“dotnet 发布”NET5.0 项目),如果是这样,我做错了什么导致包含解析的问题?

有没有更正确的方法来进行这些构建?

[编辑]:删除了蛋糕特定的语言/细节,因为蛋糕实际上只是包装了命令行构建选项。

0 投票
0 回答
13 浏览

visual-studio - vcxprj 文件可以定义为

TL;博士; 是否可以/analyze:plugin在 vcxproj 中设置 from?

使用“诊断”日志构建 C++ 项目时,可以在构建控制台中看到 CL 构建命令。启用代码分析后,此构建命令末尾附近有一个部分,内容如下:

选项的细节/analyze可以在MSVC 代码分析参考中找到。回到我最初的问题,是否可以analyze:plugin在 vcxproj 中设置 from?/analyze使用设置<RunCodeAnalysis>并且/analyze.ruleset似乎使用设置<CodeAnalysisRuleSet>。我似乎找不到设置插件的方法。

0 投票
0 回答
11 浏览

python - 从 vcxproj 中的 make.mak 文件调用 python(与其版本相同)

我有一个不属于我的 MSBuild 项目 (vcx.proj)。在这个项目中有 make.mak 文件,其中包含调用 python 的行(位于 C:\Windows\py.exe),如下所示:

所以我假设它使用的是python 3.8。所以在编译这个项目时尝试调用python 3.8版并且显然失败了(见下文):

在此处输入图像描述

...因为我已经安装了 python 3.9 x64 版(在 C:\Windows\py.exe 的属性信息下方):

在此处输入图像描述

我认为硬编码 python 版本以在 make.mak 文件中调用是一种不好的做法,所以我想使其独立于 python 版本。怎样才能做到这一点?我怎样才能修改上面指出的这些类型的行?

此外,以 PY -3.8-32 开头的行在文件中被硬编码了很多次,所以至少(如果我不能独立于版本调用 python)我想创建某种 costant o 变量,用版本初始化它适当地使用python,然后在文件中使用这个变量。在这种情况下,我该怎么做?我在 make.mak 文件的开头看到定义了一些变量,例如:

我想知道我是否可以对 python 做同样的事情,例如:

然后将其用作:

最后一件事是什么意思 -32 在上面的行末尾?32位?所以如果我有 python x64 我需要如下所示?