我最近 encountered Property Sheets在 Visual Studio 中,它提供了一种为项目定义用户定义的 $(MACRO) 的方法。他们不是 what I really want但这是迄今为止我在 VS 中能找到的最接近的。
但是,在属性管理器下(查看 -> 其他窗口 -> 属性管理器)似乎无法显示配置编辑器的用户宏部分,除非您编辑特定的配置/平台组合,比如 Debug | Win32.
如果您有相当多的配置并且想要(比如说)将同一平台上的所有配置的宏设置为相同的值,这会很快变得很麻烦。
正常编辑项目属性时,您可以选择“所有配置”和/或“所有平台”以将更改复制到子部分。这在编辑属性表时不可用。
有没有办法同时在多个配置/平台的属性表中设置值?例如,对于 x64 目标和 %PROGRAMFILES(x86)%\PostgreSQL,考虑将宏 对于 x86 目标,有没有办法同时对多个目标(调试、发布、SomeCustomTarget)执行此操作?POSTGRES_INSTALL 设置为 %PROGRAMFILES%\PostgreSQL\9.3\9.3
最佳答案
属性表是简单的属性列表。条目不是按配置或按平台。
如果您将属性表添加到项目的顶层,它会添加到下面的所有配置/平台组合中,就好像您自己将该属性表文件单独添加到每个配置中一样。
因此,所有属性在所有配置/平台变体中都是可见的。
这意味着您还可以做一些事情,比如为所有 x86 配置使用一个工作表,为所有 x64 配置使用不同的工作表,例如用于构建路径。这样,您代码中的所有其他属性都可以只使用 $(MYLIB_INCLUDE) 而不必担心它是 32 位还是 64 位构建。
您也可以有效地组合每个配置/平台和全局属性表,属性表可以引用列表中更下方的一个。 (顺序很重要,它们似乎根据 UI 从下到上阅读)。
您可以通过在主项目属性页面中编辑属性来检查属性的最终值是什么,然后点击打开“宏>”选项卡。这在调试一个用户宏引用来自不同工作表的另一个用户宏的排序问题时很有用。
例如,您可以 download from pg_sysdatetime on github here ,我创建了三个属性表:
pg_sysdatetime.props是用户可以编辑以更改路径的主表。它定义了 PGBASEDIR_x86 和 PGBASEDIR_x64 宏,以及系统上 32 位和 64 位 PostgreSQL 安装的路径。
pg_sysdatetime_x86.props是一个简单的包装器,将 PGBASEDIR 定义为 $(PGBASEDIR_x86)。
pg_sysdatetime_x64.props对 $(PGBASEDIR_x64)
我将 pg_sysdatetime.props 添加到项目的顶层,因此它应用于所有配置/平台组合。
然后我将 sysdatetime_x86.props 添加到所有 x86 平台配置,并将 sysdatetime_x64.props 添加到所有 x64 平台配置。
属性编辑器如下所示:
而且我可以在编辑属性时看到正确定义的宏:
现在我可以使用简单的宏从项目的任何地方引用 PostgreSQL libdir、include 目录等:
$(PGBASEDIR)\lib
不关心我是在做 32 位还是 64 位构建,等等。所以我可以只编辑“所有配置”、“所有平台”的设置,并且知道它们适用于一切,我不必单独编辑每一个。
这几乎就像使用 1980 年的 Makefile ;-)
关于windows - 在 Visual Studio 项目中,是否可以跨多个配置/平台设置用户宏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25810603/
我有一个Ruby程序,它使用rubyzip压缩XML文件的目录树。gem。我的问题是文件开始变得很重,我想提高压缩级别,因为压缩时间不是问题。我在rubyzipdocumentation中找不到一种为创建的ZIP文件指定压缩级别的方法。有人知道如何更改此设置吗?是否有另一个允许指定压缩级别的Ruby库? 最佳答案 这是我通过查看rubyzip内部创建的代码。level=Zlib::BEST_COMPRESSIONZip::ZipOutputStream.open(zip_file)do|zip|Dir.glob("**/*")d
类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc
我需要在客户计算机上运行Ruby应用程序。通常需要几天才能完成(复制大备份文件)。问题是如果启用sleep,它会中断应用程序。否则,计算机将持续运行数周,直到我下次访问为止。有什么方法可以防止执行期间休眠并让Windows在执行后休眠吗?欢迎任何疯狂的想法;-) 最佳答案 Here建议使用SetThreadExecutionStateWinAPI函数,使应用程序能够通知系统它正在使用中,从而防止系统在应用程序运行时进入休眠状态或关闭显示。像这样的东西:require'Win32API'ES_AWAYMODE_REQUIRED=0x0
Rails2.3可以选择随时使用RouteSet#add_configuration_file添加更多路由。是否可以在Rails3项目中做同样的事情? 最佳答案 在config/application.rb中:config.paths.config.routes在Rails3.2(也可能是Rails3.1)中,使用:config.paths["config/routes"] 关于ruby-on-rails-Rails3中的多个路由文件,我们在StackOverflow上找到一个类似的问题
给定这段代码defcreate@upgrades=User.update_all(["role=?","upgraded"],:id=>params[:upgrade])redirect_toadmin_upgrades_path,:notice=>"Successfullyupgradeduser."end我如何在该操作中实际验证它们是否已保存或未重定向到适当的页面和消息? 最佳答案 在Rails3中,update_all不返回任何有意义的信息,除了已更新的记录数(这可能取决于您的DBMS是否返回该信息)。http://ar.ru
我在使用omniauth/openid时遇到了一些麻烦。在尝试进行身份验证时,我在日志中发现了这一点:OpenID::FetchingError:Errorfetchinghttps://www.google.com/accounts/o8/.well-known/host-meta?hd=profiles.google.com%2Fmy_username:undefinedmethod`io'fornil:NilClass重要的是undefinedmethodio'fornil:NilClass来自openid/fetchers.rb,在下面的代码片段中:moduleNetclass
我有多个ActiveRecord子类Item的实例数组,我需要根据最早的事件循环打印。在这种情况下,我需要打印付款和维护日期,如下所示:ItemAmaintenancerequiredin5daysItemBpaymentrequiredin6daysItemApaymentrequiredin7daysItemBmaintenancerequiredin8days我目前有两个查询,用于查找maintenance和payment项目(非排他性查询),并输出如下内容:paymentrequiredin...maintenancerequiredin...有什么方法可以改善上述(丑陋的)代
如何在buildr项目中使用Ruby?我在很多不同的项目中使用过Ruby、JRuby、Java和Clojure。我目前正在使用我的标准Ruby开发一个模拟应用程序,我想尝试使用Clojure后端(我确实喜欢功能代码)以及JRubygui和测试套件。我还可以看到在未来的不同项目中使用Scala作为后端。我想我要为我的项目尝试一下buildr(http://buildr.apache.org/),但我注意到buildr似乎没有设置为在项目中使用JRuby代码本身!这看起来有点傻,因为该工具旨在统一通用的JVM语言并且是在ruby中构建的。除了将输出的jar包含在一个独特的、仅限ruby
使用带有Rails插件的vim,您可以创建一个迁移文件,然后一次性打开该文件吗?textmate也可以这样吗? 最佳答案 你可以使用rails.vim然后做类似的事情::Rgeneratemigratonadd_foo_to_bar插件将打开迁移生成的文件,这正是您想要的。我不能代表textmate。 关于ruby-使用VimRails,您可以创建一个新的迁移文件并一次性打开它吗?,我们在StackOverflow上找到一个类似的问题: https://sta
我需要从一个View访问多个模型。以前,我的links_controller仅用于提供以不同方式排序的链接资源。现在我想包括一个部分(我假设)显示按分数排序的顶级用户(@users=User.all.sort_by(&:score))我知道我可以将此代码插入每个链接操作并从View访问它,但这似乎不是“ruby方式”,我将需要在不久的将来访问更多模型。这可能会变得很脏,是否有针对这种情况的任何技术?注意事项:我认为我的应用程序正朝着单一格式和动态页面内容的方向发展,本质上是一个典型的网络应用程序。我知道before_filter但考虑到我希望应用程序进入的方向,这似乎很麻烦。最终从任何