标签: debug-build

STL替代方案

我真的很讨厌使用STL容器,因为它们使我的代码的调试版本运行得非常慢.其他人使用什么代替具有合理性能的调试版本的STL?

我是一名游戏程序员,这对我所参与的许多项目都是一个问题.当你使用STL容器时,很难获得60 fps.

我的大多数工作都使用MSVC.

c++ performance stl debug-build

25
推荐指数
5
解决办法
1万
查看次数

使用ClickOnce阻止部署调试版本

我正在使用VS2008发布ClickOnce应用程序,但在每次发布之前我都必须手动切换到Release配置.这是好的,只要我不忘记切换.有没有办法阻止部署调试版本?是否有一些编译器指令,如:

#if DEBUG
#if ClickOnce
#error You cannot publish a debug build
#endif
#endif
Run Code Online (Sandbox Code Playgroud)

或者有没有一种方法(没有构建脚本)在发布之前自动切换到Release配置?

(我发现了一些类似的问题,但不喜欢它们上面的问题)

谢谢

c# deployment clickonce debug-build

10
推荐指数
1
解决办法
3325
查看次数

"应用程序配置不正确"和"并行配置不正确"运行VS2008 64位调试版本

我正在使用64位操作系统Windows 7终极机VS2008 64位插件.

我已经在32位和64位,调试和发布配置中成功构建了我的项目.64位调试没有启动; 它给出了错误:

无法启动程序xxx此应用程序无法启动,因为应用程序配置不正确.查看清单文件以查找可能的错误.重新安装应用程序可能会解决此问题.有关更多零售,请参阅应用程序事件日志

我运行了依赖性walker.从redistibutable路径C:\ Program Files(x86)\ Microsoft Visual Studio 9.0\VC\redist\Debug_NonRedist\amd64\Microsoft.VC90.DebugCRT我添加了Microsoft.VC90.DebugCRT.manifest msvcm90d msvcp90d msvcr90d Microsoft.VC90.DebugOpenMP vcomp90d. sll在我的解决方案的bin\debug文件夹中.

最后,依赖者walker没有留下任何黄色标记(丢失的文件),但它仍然给出了如下错误:

错误:找不到至少一个必需的隐式或转发依赖项.错误:由于隐式依赖模块中缺少导出功能,至少有一个模块具有未解析的导入.错误:找到了具有不同CPU类型的模块.错误:"e:\ xyz.EXE"中的Side-by-Side配置信息包含错误.应用程序无法启动,因为它的并排配置不正确.请参阅应用程序事件日志或使用命令行sxstrace.exe工具获取更多详细信息(14001).

32位清单说:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel level="asInvoker" uiAccess="false"></requestedExecutionLevel>
      </requestedPrivileges>
    </security>
  </trustInfo>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type="win32" name="Microsoft.VC90.DebugCRT" version="9.0.21022.8" **processorArchitecture="x86"** publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
    </dependentAssembly>
  </dependency>
</assembly>
Run Code Online (Sandbox Code Playgroud)

而64位调试清单具有:

 <dependency>
    <dependentAssembly>
      <assemblyIdentity type="win32" name="Microsoft.VC90.DebugCRT" version="9.0.21022.8" processorArchitecture="amd64" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
    </dependentAssembly>
  </dependency>
Run Code Online (Sandbox Code Playgroud)

我无法理解的是,为什么调试32位构建成功运行?

请帮帮我,因为我已经检查了很多问题,但没有找到任何可行的解决方案.

c++ 64-bit debug-build manifest visual-studio-2008

7
推荐指数
1
解决办法
1万
查看次数

在非开发机器上运行vc2008 debug

我正在vc2008中构建我的应用程序并在机器网络上进行测试.

除了安装Visual Studio 2008之外,还有什么方法可以在另一台机器上运行C++程序的调试版本?(即没有安装vc2008)

安装redist软件包只会为vc2008程序安装发布模式支持DLL.目前它抱怨"此应用程序无法启动,因为应用程序配置不正确.重新安装应用程序可能会解决此问题.",我假设是"我缺少DLL"的代码.

debug-build visual-studio-2008 visual-studio

4
推荐指数
1
解决办法
4093
查看次数

C# - 是否真的需要在.net中进行调试构建

如果发布版本生成.pdb文件,你可以进入每一行,放置断点等,那么为什么还要费心去构建我的组件的"调试"版本?

我正在为我的项目使用c#,我没有调试发布版本的问题.在C++中我调试优化代码时遇到问题,但在C#中它运行正常.我不是在谈论愚蠢的代码块if(false)......

.net c# debug-build

4
推荐指数
3
解决办法
1236
查看次数

我可以在C#中修饰一个方法,使它只在调试版本中编译吗?

我知道你可以#if DEBUG在C#中使用和喜欢,但是有可能创建一个完全被忽略的方法或类,包括没有包含在#if DEBUG块中的所有用法吗?

就像是:

[DebugOnlyAttribute]
public void PushDebugInfo()
{
    // do something
    Console.WriteLine("world");
}
Run Code Online (Sandbox Code Playgroud)

然后:

void Main()
{
    Console.WriteLine("hello ");
    Xxx.PushDebugInfo();
}
Run Code Online (Sandbox Code Playgroud)

其中,如果DEBUG定义将打印"hello world",否则只打印"hello".但更重要的是,MSIL在发布版本中根本不应包含方法调用.

我相信我所遵循的行为类似于Debug.WriteLine,其调用被完全删除,并且对发布版本中的性能或堆栈深度没有影响.

并且,如果可能在C#中,使用此方法的任何.NET语言都会表现相同(即,编译时与运行时优化).

还标记了,因为基本上我会在那里需要这个方法.

.net c# f# debug-build

1
推荐指数
1
解决办法
525
查看次数

如何在发布版本中使标签不可见

我想在发布版本上隐藏listview项,但在调试版本中使其可见.我在互联网上搜索它,但我找不到任何关于它的东西.有人可以帮帮我吗?

android listview visibility debug-build release-builds

-6
推荐指数
1
解决办法
89
查看次数