问题标签 [vsprops]

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 投票
7 回答
16885 浏览

c++ - 从同一个项目构建 DLL 和静态库

我有许多在 Visual Studio 2005 下编译的本机 C++ 库(Win32,没有 MFC),并在许多解决方案中使用。

我希望能够选择将它们编译和链接为静态库或 DLL,具体取决于我使用它们的特定解决方案的需要。

最好的方法是什么?我考虑过这些方法:

1.多个项目文件

  • 示例:“foo_static.vcproj”与“foo_dll.vcproj”
  • 优点:易于为新库生成,不需要太多手动 vcproj 修改。
  • 缺点:两个地方的设置、文件列表等太容易不同步。

2.单个项目文件,多种配置

  • 示例:“调试 | Win32”与“调试 DLL | Win32”等。
  • 优点:文件列表更容易保持同步;编译选项更容易保持同步
  • 缺点:我为 Win32 和智能设备目标构建,所以我已经有多种配置;我不想让我的组合爆炸变得更糟(“FooPhone 的静态库 | WinMobile 6”、“FooPhone 的动态库 | WinMobile 6”、“BarPda 的静态库 | WinMobile 6”等。
  • 更糟糕的骗局:VS 2005 有一个坏习惯,即假设如果您为平台“Foo”定义了配置,那么您的解决方案中的所有其他平台确实需要它,并且随意插入所有配置/平台配置的排列受影响的 vcproj 文件,无论是否有效。(向 MS 提交的错误;作为 WONTFIX 关闭。)

3.单个项目文件,通过vsprops文件选择静态或动态

  • 示例:将适当的 vcproj 片段存储在属性表文件中,然后在需要静态库时将“FooApp 静态库”属性表应用于配置/平台组合,并在需要 DLL 时应用“FooApp DLL”属性表。
  • 优点:这是我真正想做的!
  • 缺点:这似乎不可能。 .vsprops 文件似乎无法覆盖在静态库和动态库之间切换的 .vcproj 属性(Configuration 元素的 ConfigurationType 属性)。Microsoft 为这些文件发布的架构仅列出 <Tool> 和 <UserMacro> 元素。

编辑:如果有人建议,我还尝试了#3 的更“聪明”版本,其中我定义了一个 .vsprops,其中包含一个名为“ModuleConfigurationType”的 UserMacro,其值为“2”(DLL)或“ 4"(静态库),并将 .vcproj 中的配置更改为具有ConfigurationType="$(ModuleConfigurationType)". Visual Studio 无提示地删除该属性并将其替换为ConfigurationType="1". 太有帮助了!

我错过了更好的解决方案吗?

0 投票
1 回答
1565 浏览

visual-studio-2008 - VS2008:将自定义构建规则添加到属性表(vsprops)?

我正在使用 CUDA SDK 附带的 CUDA .rules 文件在我的项目中进行自定义构建步骤。
为了节省属性重复,我想在 .vsprops 文件中定义 CUDA 规则的属性。出于某种原因,属性树的 CUDA 规则分支不会显示在我的任何属性表下,仅显示在主配置表下。
我尝试使用文本版本编辑 .vsprops 并手动添加该部分,但在 Visual Studio 中仍然没有显示任何更改。
有没有办法做到这一点?

0 投票
3 回答
2532 浏览

visual-studio - 带有 vcproj/vsprops 的可选环境变量

有没有办法在项目文件(有或没有 vsprops)中进行环境变量替换,如果找不到变量,则用默认值替换?我还没有找到任何方法来做到这一点,因为一切似乎都覆盖了环境变量。

编辑:我需要它来为属性工作,而不是为环境变量工作。具体来说,可以使用指定目标构建目录的环境变量从另一个源调用 devenv。如果该变量不存在(可能是因为 devenv 只是用作 IDE),那么它应该使用默认值。

我已经为 MSBuild 工作了;我现在需要它为 VCBuild 工作。

0 投票
2 回答
302 浏览

c++ - 我的 vsprops(属性表)文件中可以包含特定于平台的部分吗?

我正在创建一个 vsprops 文件以包含我的解决方案中所有项目共有的包含路径和库路径。

但是,我有 lib 路径的平台特定路径,可以是 Win32/x64。是否可以将这些设置放在一个 vsprops 文件中?或者我是否必须为每个平台创建不同的 vsprops 文件,然后花时间在 Visual Studio 中使用 Property Manager 以确保引用正确的文件?

0 投票
1 回答
259 浏览

c++ - 如何在 vsprops 属性表中控制继承包含的顺序?

我正在使用一些相互继承的 vsprops 表。我的基本属性表定义了一些包含路径。在从它继承的第二个 vsprops 文件中,我想添加更多包含路径。

但是,我希望能够选择附加包含路径是在基本包含路径之前还是之后。我确定我见过类似 $(Inherits) 变量的东西可以用来执行此操作,但我不记得它是什么或再次找到它。

任何帮助,将不胜感激。

0 投票
1 回答
1279 浏览

visual-studio - vsprops 中的 CharacterType/ConfigurationType

我一直在使用 Visual Studio 的属性表来构建我的代码,并且我有一个有用的表层次结构来控制构建设置,而不是将它们放在 vcproj 文件中。这很好,除了一件事。我似乎无法在“项目默认值”部分设置属性,例如 CharacterType 和 ConfigurationType。

我尝试在 vsprops 中使用 VCConfiguration 工具,但无济于事:

谁能告诉我这是如何完成的吗?

0 投票
1 回答
398 浏览

visual-studio-2008 - 通过 VS 自动化和扩展访问 .vsprops(属性表)

我正在尝试访问在 Visual Studio 2008 项目使用的 .vsprops(属性表)中定义的用户宏。我找不到任何有关使用 VS 自动化和扩展功能(即 EnvDTE 等)访问 .vsprops 文件中的任何信息的文档。有谁知道这是否可能?

0 投票
2 回答
1272 浏览

visual-studio-2010 - 在一个解决方案中具有多个(不同)构建配置的多个项目

在同一个VS项目中拥有多个构建配置的正确且简单的逐步方法是什么,其中解决方案还包含多个项目?这些项目将具有不同的构建配置。基本上,我正在寻找项目 A 与 Dll 调试、Dll 发布、静态(库)调试和静态(库)发布,项目 B 与构建一个 .exe 的调试和发布。

0 投票
2 回答
843 浏览

c++ - 强制 VSProps 设置覆盖项目设置

我有一个 vsprops 文件,它定义了我们所有项目都应该为 Visual Studio 2008 构建的优化。如果我将项目的属性设置为“从项目默认值的父级继承”,它会起作用,并将它们填充到 vcproj 文件中。但是,这并不能保护我免受开发人员签入更改优化的项目文件的影响。在这种情况下,项目设置将用于 vsprops 设置。我需要做到这一点,以便 vsprops 始终优先于 vcproj 文件中的内容。这可能吗?也欢迎其他解决方法。

0 投票
2 回答
316 浏览

visual-c++ - MSVC 链接器不会通过 vsprops 文件应用 RandomizedBaseAddress

我正在尝试使用 vsprops 文件将 ASLR 添加到项目中。我已验证该文件正在被项目使用,因为文件中还有其他设置正在被应用,并且在 MSVC 下打开项目时故意损坏文件会产生错误。当我将 ASLR 设置为时,yes我可以RandomizedBaseAddress="2"<Tool Name=VCLinkerTool.

但是......它没有效果。我也可以放RandomizedBaseAddress="xxxxx",它不在乎。就好像链接器的设置没有被拾取。我还尝试GenerateDebugInformation="True"了这是我看到其他 vsprops 文件使用的另一个设置,这也被忽略了。就好像链接器忽略了 vsprops 文件或其中的这些设置。

是什么赋予了?有没有人见过这个?