我的计算机上安装了一个应用程序.如何确定它是否在DEBUG模式下编译?
我曾尝试使用.NET Reflector,但它没有显示任何具体内容.这是我看到的:
// Assembly APPLICATION_NAME, Version 8.0.0.15072
Location: C:\APPLICATION_FOLDER\APPLICATION_NAME.exe
Name: APPLICATION_NAME, Version=8.0.0.15072, Culture=neutral, PublicKeyToken=null
Type: Windows Application
Run Code Online (Sandbox Code Playgroud) 有没有办法找出是否已在未修改程序集的情况下使用TRACE或DEBUG标志集编译程序集?
所以我使用mvc app大约有10个短css文件.有像error.css login.css等...只是一些非常短的CSS文件,使更新和编辑变得容易(至少对我来说).我想要的是优化if else分支并且不将其合并到最终位中的东西.我想做这样的事情
if(Debug.Mode){
<link rel="stylesheet" type="text/css" href="error.css" />
<link rel="stylesheet" type="text/css" href="login.css" />
<link rel="stylesheet" type="text/css" href="menu.css" />
<link rel="stylesheet" type="text/css" href="page.css" />
} else {
<link rel="stylesheet" type="text/css" href="site.css" />
}
Run Code Online (Sandbox Code Playgroud)
我将有一个msbuild任务,将结合所有的CSS文件,最小化它们和所有好东西.我只需要知道是否有一种方法可以删除最后一位中的if else分支.
更确切地说 - 如何以标准方式做到这一点?
我喜欢我的程序引起的VS跟踪异常的方式,因此当从VS运行它时,我没有理由使用我自己的机制来处理和显示异常.当然,当程序作为独立应用程序执行时,我必须依赖我的异常处理程序.
我知道,我可以在VS中定义一个参数来运行程序,这样可以识别这是否是VS运行,但我正在寻找标准的东西.也许VS设置一个标志,表明这是VS运行?
在Visual Studio VSTO中,如何指定每次运行项目进行调试时打开的文档?
默认情况下,它总是打开一个空白文档,当然我想测试文档中已经存在的功能。
我一直认为Debug版本比Release版本慢,因为编译器需要另外生成调试器信息.我最近惊讶地听到我的一位同事说发布版本通常需要更多时间.(我相信这只是因为增量链接/编译).
一般来说,哪两个更快?
我已经多次遇到此问题,因此需要将其作为一种自动化方法:
我有多个正在不断构建/更改以供多个项目使用的DLL文件。
我创建了一个C#应用程序,该应用程序检测DLL文件是否存在,如果不存在则警告操作员并杀死该程序。在此C#应用程序中,我希望它也检查以确定它是否是“调试”版本-换句话说,如果在最终用户计算机上运行,它将崩溃。
现在,我一直在寻找高处和低处,找到了一些可能的解决方案,但它们全都失败了。
Assembly.LoadFrom(string)不适用于非托管代码。我可以用它来测试托管的DLL文件,而不是C ++的文件。
我以为我可以使用Dependency Walker或类似程序在我的应用程序中运行,以向我提供程序集引用的数据,不幸的是,depends.exe控制台仅输出到一个文件(然后我必须读入每个文件并进行解析它用于我的数据(非常费力depends.exe,而且我必须在项目中包括和DLL文件),此外,它似乎没有输出我真正想要的数据(或者至少我无法制作它)。
也尝试过dumpbin,但我似乎无法使其在我的计算机上运行。
我还发现了一些链接,这些链接应该可以为我提供Dependency Walker的资源。不幸的是,他们都死了。我不认为这很难做,但是无论出于何种原因,我都很难弄清楚如何实现此自动化。
一些源链接对我很有帮助,但没有一个可以解决非托管程序集数据的问题。
我在Dart应用程序中得到了一堆测试和调试内容,我想确保在使用pub构建发布版本时禁用这些内容.
是否有任何常量或其他方法来检查当前运行的应用程序版本是否是发布版本?
例:
if (!IS_BUILD) {
performAutomatedDummyLogin()
} else {
login();
}
Run Code Online (Sandbox Code Playgroud) 我需要能够在运行时确定用于构建可执行文件的编译选项.有没有办法做到这一点?
编辑:我对检测优化设置特别感兴趣.原因是我正在编写必须尽可能快地运行的商业软件.虽然我只是在修改和测试系统,但我没有做所有的优化,因为它需要太长时间.但我担心我可能不小心去发布一个未经优化的程序版本.我想做的是让程序在启动时给我一个视觉警告,说"这是慢速版本 - 不要发布".
编辑:也许我可以写一些小实用程序作为预构建步骤运行?命令行是否存储在某个文件中?如果它然后我可以提取它,然后将它写为一些包含文件作为字符串,嘿presto!
编辑:我的选择不是在调试和发布之间.调试太慢了 - 我严格保留调试.我的日常选择是在优化和超优化之间(包括慢编译链接时间编译,甚至是配置文件引导优化).
编辑:我经常更改复杂的编译过程,不同的库,不同的预定义宏,不同的源文件等.维护多个几乎相同的项目文件似乎很笨拙,只有几个优化标志不同.我更喜欢只在需要时在一个项目中切换几个标志并重新编译.我只是想让可执行文件自我测试它是如何创建的.
编辑: IIRC有一些方法可以要求visual studio创建一个makefile.我可以要求visual studio为我创建这个makefile作为预构建步骤吗?
我有一个内置的应用程序VS2013(写入C#),我怎么知道它是在Debug或Release模式下构建的?是否足以检查文件.pdb是否存在?这不是C#if/then指令调试vs发布的重复..假设我没有源代码,只有编译文件,查看它们是否有可能确定构建模式?我可以只查找.pdb文件吗?
.net ×4
debugging ×4
build ×3
c# ×3
release ×3
dll ×2
assemblies ×1
c++ ×1
dart ×1
executable ×1
performance ×1
release-mode ×1
trace ×1
vba ×1
vsto ×1