问题标签 [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.
c++ - BuildMacro 元素在 Visual Studio 属性和项目中的作用是什么?
我已经看过好几次了:
这与仅定义属性有何不同?令我惊讶的是,这个词在 MSDN 上只有三个结果,而且只有一个是英文的。一个结果并没有真正帮助我理解上面的结构。
visual-studio - Clearcase - 将两个文件合并为一个具有统一历史记录的文件
我有两个不同的文件,每个文件都有自己的历史,我想将它们合并为一个,但保留两个历史。
例如(我的实际问题):在从旧的视觉工作室转换到新的视觉工作室之后,我有x.vcproj
and x.vcxproj
(我什至不记得这些是哪些了)。基本上在转换之后,我们一起停止使用旧格式。
那时应该做的是编写一个遍历所有转换项目的脚本(在向 clearcase 添加任何内容之前):
- 签出
x.vcproj
及其包含的文件夹。 - 重命名
x.vcxproj
为一些临时文件,比如说x.vcxproj.temp
- 用于
cleartool
重命名x.vcproj
为x.vcxproj
- 用
x.vcxproj
_x.vcxproj.temp
- 签入
x.vcxproj
文件。
这在当时就可以做到,但还没有做到,现在大多数<Project Name>.vcxproj
已经有了自己的广泛历史。
这两个文件的历史可以统一起来,还有一些如何模拟上述流程?
视觉示例:
从:
我想得到以下结果树:
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 文件
- 项目在这些错误之后继续,并且正常运行,没有进一步的错误。但是我担心它可能会在以后引起问题,并且为了完整起见想要清除它。
msbuild - 如何检查字符串是否包含msbuild中的字符串?
我在为我的项目编写targets
文件时遇到问题。vcxproj
在我的targets
文件中,我首先要根据配置设置一些构建属性,所以我有这个:
但是当我尝试使用导入的目标文件打开项目时出现错误
我正在使用 Visual Studio 2022 预览版。根据MSBuild 文档,字符串只是一个 .Net5 字符串,应该有方法。有人可以帮我吗?
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 项目),如果是这样,我做错了什么导致包含解析的问题?
有没有更正确的方法来进行这些构建?
[编辑]:删除了蛋糕特定的语言/细节,因为蛋糕实际上只是包装了命令行构建选项。
visual-studio - vcxprj 文件可以定义为
TL;博士; 是否可以/analyze:plugin
在 vcxproj 中设置 from?
使用“诊断”日志构建 C++ 项目时,可以在构建控制台中看到 CL 构建命令。启用代码分析后,此构建命令末尾附近有一个部分,内容如下:
选项的细节/analyze
可以在MSVC 代码分析参考中找到。回到我最初的问题,是否可以analyze:plugin
在 vcxproj 中设置 from?/analyze
使用设置<RunCodeAnalysis>
并且/analyze.ruleset
似乎使用设置<CodeAnalysisRuleSet>
。我似乎找不到设置插件的方法。
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 我需要如下所示?