标签: visual-studio-2003

序列化对象时省略XML处理指令

我正在C#VS2003/.Net 1.1应用程序中序列化一个对象.但是,我需要在没有处理指令的情况下进行序列化.XmlSerializer类推出类似这样的东西:

<?xml version="1.0" encoding="utf-16" ?> 
<MyObject>
    <Property1>Data</Property1>
    <Property2>More Data</Property2>
</MyObject>
Run Code Online (Sandbox Code Playgroud)

有没有办法得到类似下面的内容,而不处理生成的文本删除标签?

<MyObject>
    <Property1>Data</Property1>
    <Property2>More Data</Property2>
</MyObject>
Run Code Online (Sandbox Code Playgroud)

对于那些好奇的人,我的代码看起来像这样......

XmlSerializer serializer = new XmlSerializer(typeof(MyObject));
StringBuilder builder = new StringBuilder();

using ( TextWriter stringWriter = new StringWriter(builder) )
{
    serializer.Serialize(stringWriter, comments);
    return builder.ToString();
}
Run Code Online (Sandbox Code Playgroud)

.net c# visual-studio-2003 xml-serialization

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

父类和内类具有相同名称时的名称解析错误

我对Visual Studio 2003有一个奇怪的例子.出于某些合理的原因,我有以下层次结构:

class A {};

class B : public A {
public:
    class A {};
};

class C : public B::A {};
Run Code Online (Sandbox Code Playgroud)

也就是说,我有一个内部类与外部类的父类同名.当C尝试继承时B::A,Visual Studio认为我指的是父类A,而不是内部的嵌套类B.GCC似乎按照我的预期解决了内部类版本

这是一个Visual Studio 2003错误,还是我做错了?是否有解决方法(除了升级Visual Studio)?

c++ visual-studio-2003 token-name-resolution class-hierarchy

10
推荐指数
2
解决办法
259
查看次数

System.BadImageFormatException:如何修复.NET版本不匹配?

我在VS 2005中编写了一个dll,它将由另一个在VS 2003中开发的程序加载.当该程序试图加载我的dll时,它会抛出一个System.BadImageFormatException: The format of the file 'Foo.dll' is invalid.

我搜索了SO和谷歌,似乎不同版本的.NET是罪魁祸首.我的问题是:我该如何解决这个问题?

(我无法修改VS 2003中开发的程序.)

.net visual-studio-2003 visual-studio-2005 visual-studio

9
推荐指数
3
解决办法
3万
查看次数

我仍然可以在VisualStudio 2010中定位.NET Framework 1.1吗?

我正在使用.Net Frame V1.1在VisualStudio 2003上运行的项目,现在,我想在VisualStudio 2010中运行我的项目?我仍然可以在VisualStudio 2010中定位.NET Framework 1.1吗?

visual-studio-2003 visual-studio-2010 .net-framework-version

9
推荐指数
2
解决办法
8801
查看次数

尝试在VS2013中启动ASP.NET项目时,"当前状态下的操作不合法"错误?

我有一个使用WebMatrix 3创建的ASP.NET网站.我确实在VS2013中选中了使用64位版本的IIS Express,因为我在64位Windows 8.1上运行.当我尝试启动项目时,我收到错误"操作在当前状态下不合法".有人知道如何解决这个问题吗?

asp.net visual-studio-2003 webmatrix

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

在编译器之间匹配va_list类型

我有一个由一堆动态加载的模块组成的项目.最初,一切都是用MSVC 2003构建的,但最近我一直在努力让它与GCC一起工作.除了一个问题,一切都很顺利.对于64位代码,GCC和MSVC不同意它是什么va_list.对于32位,事情看起来很好.64位不匹配导致的问题是,使用一个编译器构建的模块具有带va_list参数的公共函数,并且该函数是从其他编译器构建的模块调用的.

除了第7.15节变量论证va_list之外,规范没有说明是什么,第3段:<stdarg.h>

声明的类型是

va_list

其适合用于保持由宏所需信息的对象类型va_start,va_arg,va_end,和va_copy.

那一段只是意味着这是所有编译器相关的东西 - 所以,有没有办法让这两个编译器就64位的内容达成一致va_list?对我的系统影响最小,使GCC与MSVC匹配va_list最好,但我会采取任何我能得到的解决方案.

谢谢你的帮助!

编辑:

我做了一些32位测试,我也有问题,这让我感到惊讶,因为任何32位Intel平台之间都没有ABI差异.我正在使用的MSVC代码库将所有可变参数函数宏定义为:

typedef char *va_list;
#define intsizeof(n)    ((sizeof(n) + sizeof(int) - 1) &~(sizeof(int) - 1))
#define va_start(ap, v) (ap = (va_list)&(v) + intsizeof(v))
#define va_arg(ap, t)   (*(t *) ((ap += intsizeof(t)) - intsizeof(t)))
#define va_end(ap)      (ap = (va_list)0)
Run Code Online (Sandbox Code Playgroud)

我从实际项目中略微简化了一下,但这是我用于测试的代码.使用GCC,这段代码肯定没有正确得到我的论点.也许这只是一个bug,正如Zack在下面所说的那样?

再次编辑:

我得到的工作成果与下列32位测试应用程序-O0,-O0-O2,但不-O3,-Os …

c gcc visual-studio-2003 variadic-functions

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

在运行时更改MenuItem标题

我有一个菜单,其中包含各种菜单项,正如您通常所做的那样.每个MenuItem(按钮)都有一个标题,我想在运行时更改该标题.在一个不是真正问题的普通按钮上,我只是打电话GetDlgItem(ID)->SetWindowText(CString);

但是我无法在菜单项上执行此操作,因为我无法将ID分配给其中任何一个."属性"编辑器中的ID字段实际上显示"无法编辑ID".

那么如何在运行时更改菜单项文本?

编辑:我已经尝试使用CMenu :: ModifyMenu但是我没有成功.我不知道如何指定要更改的按钮(元素).另外,我怀疑我将CString作为参数传递的方式的正确性.

这是我的(失败)尝试:

CString str = "Foo";
CMenu * pMenu = m_wndToolBar.GetMenu();
pMenu->ModifyMenu(1, MF_BYPOSITION | MF_STRING, 0 /*Don't know what to pass as nIDNewItem */, str);
Run Code Online (Sandbox Code Playgroud)

这(对ModifyMenu方法的调用)会抛出调试断言错误.请注意,我不知道nIDNewItem是什么.

user-interface mfc visual-studio-2003 menu menuitem

8
推荐指数
3
解决办法
4744
查看次数

奇怪的C++语法

我有8年的编码经验,但我从未见过运算符[]作为参数传递给函数定义.

例如,以下代码(来自开源项目):

bree::porder(m_root, [] (treenode* node) { delete node; }); 
Run Code Online (Sandbox Code Playgroud)

在我的编码生涯中,我总是定义[]为操作符重载程序,而不是参数.

那么这个新语法意味着什么呢?

我正在使用Visual Studio 2003附带的编译器.如何更改上面的代码以便在VS 2003中编译?

c++ lambda visual-studio-2003 square-bracket visual-c++

8
推荐指数
3
解决办法
782
查看次数

Visual Studio 2003仍然可用/受支持

几乎就是标题所说的内容.

我们有一些基于.NET 1.1的代码,并没有真正的上转换它的愿望.但是,我们希望将开发人员添加到团队中,他们将需要Visual Studio的副本.

我的理解是他们需要VS 2003 - 因为这是唯一支持.NET 1.1的IDE,但我想知道我们是否还能购买它!

.net visual-studio-2003 visual-studio

7
推荐指数
2
解决办法
2811
查看次数

Boost 1.57.0 bootstrap.bat不适用于Visual Studio .NET 2003

在安装了Visual Studio .NET 2003 SP1的开发机器Vista SP1上

- 使用boost 1.44.0我使用bootstrap.bat生成b2.exe和bjam.exe没有问题
- 使用boost 1.57.0我收到此错误消息时运行bootstrap.bat:

    Building Boost.Build engine

Failed to build Boost.Build engine.
Please consult bootstrap.log for furter diagnostics.
Run Code Online (Sandbox Code Playgroud)

这是从cmd.exe或Visual Studio .NET 2003命令提示符发生的.

我在boostrap.log中有这些错误:

builtins.c(1885):错误C2065:'FSCTL_GET_REPARSE_POINT':未声明的标识符builtins.c
(1889):错误C2065:'IO_REPARSE_TAG_SYMLINK':未声明的标识符

builtins.c包含

#ifdef OS_NT
#include <windows.h>
#ifndef FSCTL_GET_REPARSE_POINT
/* MinGW's version of windows.h is missing this, so we need
 * to include winioctl.h directly
 */
#include <winioctl.h>
#endif
#endif
Run Code Online (Sandbox Code Playgroud)

和FSCTL_GET_REPARSE_POINT在VS .NET 2003提供的winioctl.h中

我想OS_NT定义由于某种原因缺失了?

注意:Boost 1.57.0 windows文档 仍然引用VS .NET 2003

boost visual-studio-2003 bjam b2

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