Visual Studio:我能复制一个项目的属性来用在另一个项目中吗?

80
我已经添加了几个目录和库,例如matlab、opencv等,以编译我在Visual Studio项目中的当前C文件。
我的所有即将开始的项目都需要相同的设置/属性。 我需要单独设置每个项目的属性吗?还是有办法可以应用到全部项目?
4个回答

106

尝试使用属性表格(Property Sheets)。它们可以创建一个单独的属性文件,该文件可以被多个项目继承。

  1. 使用 "视图 > 其他窗口 > 属性管理器"来打开属性管理器。它将显示您的项目和配置。

  2. 右键单击配置,并选择 "添加新的项目属性表格..."。您可以为其命名,并选择适用于所有项目的位置。

  3. 创建后,您可以像编辑构建配置一样编辑其属性。

  4. 要将该属性表格用作其他项目的基础,请右键单击配置或项目,然后选择 "添加现有的属性表格..."。浏览到保存原始表格的位置,它将被继承。

对原始表格的任何更改都将应用于继承它的任何项目,除非被覆盖。如果进入较高级别的属性,覆盖的属性值将以粗体显示。要使它们始终使用基础表格中的值,在适用的地方将会有一个"从父级或项目默认值继承"选项。


8
这个解决方案适用于哪个版本的VS?我好像在VS-2008上无法使其正常工作... 我漏掉了什么吗? - Shai
24
有没有一种方法可以从已经配置了所有必要配置的当前项目中自动生成属性表?我不想手动将每个属性再添加到属性表中。 - Samitha Chathuranga
似乎这只适用于C++,对于Fortran无效。对于Fortran项目,“属性管理器”为空白。 - user15964
16
对我来说这个并没有起作用,它没有回答我的问题,如何将一个项目的属性移植到另一个项目中。另外,这些说明含糊不清且不完整。 - Owl
2
@Shai 它在 VS 2022 中很好用。我在一个 C++ 项目中尝试了一下。 - qqqqq
显示剩余3条评论

4

我正在使用 AtmelStudio 6.1,它是基于 Visual Studio 2010 构建的(我相信),但我找不到任何属性管理器。因此,我使用的方法是:

  1. close (or at least unload via the contextual menu) the project whose configuration you want to modify
  2. open its .cproj file (which is XML) in any text editor (VS works nicely),
  3. MAKE A BACKUP COPY OF IT SOMEWHERE ELSE JUST IN CASE,
  4. open the .cproj file of the project whose configuration data you want to copy,
  5. look for the configuration data you want. Configurations are inside of PropertyGroup tags; for example, in my case it looks like

    <PropertyGroup Condition=" '$(Configuration)' == 'Preprocess only' "> 
    

    for the configuration named "Preprocess only". Copy from the beginning of that tag until the end of the corresponding

    </PropertyGroup> 
    

    tag.

  6. Paste the block into the destination .cproj, just after other

    </PropertyGroup>
    

    tag. Make sure that the name of the configuration is unique in this file. Save.

您已经完成了。现在在VS中正常打开项目,您将能够选择添加的配置。


2
对于MSVS 2017,@AaronMK提到的过程不起作用。请按照以下步骤操作:
  1. 查看 -> 其他窗口 -> 属性管理器
  2. 添加新属性表。
  3. 编辑您想要的任何选项。
  4. 给它一个适当的名称,以便您记得它。
  5. 右键单击它并点击“保存{myPropertySheet}”
  6. 最好将它放在默认属性表旁边,这样您可以随时添加它(通过属性管理器 -> 添加现有属性表 -> 浏览到其位置)。此目录为:C:\Users\{myUsername}\AppData\Local\Microsoft\MSBuild\v4.0
或者您可以编辑默认属性表并默认使用这些属性表。我不建议这样做,因为它们提供了一种回退选项,以防您搞砸。因此,在编辑默认文件之前,请首先备份。

2
对于Visual Studio 2010及以上版本,您可以创建一个项目模板
如果您选择在模板创建向导中自动将模板添加到Visual Studio中,在创建/添加新项目时,该模板将出现(在重新启动Visual Studio后)。使用此模板创建的项目将具有相同的项目属性!
要将源代码文件添加到模板中,最简单的方法是将源代码文件在解决方案资源管理器中重新排列为根目录(而不是在任何文件夹下面)。在完成此操作后,再生成模板。
为什么?有时将文件放在默认的源代码解决方案资源管理器文件夹下(而不是在文件资源管理器中的.project.filters标签下)会导致复制源文件到模板失败。当您尝试使用模板时,您将看到“文档无法打开。它已被重命名、删除或移动”,并且您想要的文件将不会出现在文件资源管理器中。
如果您确实需要解决方案资源管理器文件夹,则必须通过解压缩模板文件夹、进行更改,然后重新压缩来手动将其添加到模板中。
例如,直接复制并粘贴您想要模板具有的源文件到模板文件夹中,并编辑 .vstemplate 文件。M$ Doc on template editing
<TemplateContent>
<!-- put new file references here and/or in your .vcxproj .vcxproj.filters --> 
 TargetFileName="HelloWorld.cl">HelloWorld.cl</ProjectItem>
      <ProjectItem ReplaceParameters="false" 
</TemplateContent>

相关问题:

我如何使用我创建的VS模板?

我如何加载我在Visual Studio中创建的模板?

如何复制Visual Studio项目?

对于复杂或共享项目,不建议简单地复制和粘贴整个项目和解决方案,因为各种GUID和文件名可能会重叠,从而导致错误。


3
我使用的是Visual Studio 2017(专业版,v15.8.2);在添加新项目时可以使用属性表,并且可以通过属性管理器进行管理。 - Mike P
1
你有关于(Visual Studio 2017+不支持属性表(Property sheets))的来源吗?我在新文档中找到了一些信息,而且他们仍在修复错误 - BNT
完美!如果您已经配置了属性但没有使用属性表格(因为似乎没有办法在事后导出表格),那么这就是要使用的解决方案。 - Joe Coder

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接