【问题标题】:How to specify CppCodeProvider on command line of svcutil.exe?如何在 svcutil.exe 的命令行上指定 CppCodeProvider?
【发布时间】:2023-03-10 02:54:01
【问题描述】:

我正在尝试使用 svcutil 从 XSD 生成托管 C++ 代码。我使用的命令行是

"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin\xsd.exe" MyTest.xsd /classes /language:"Microsoft.VisualC.CppCodeProvider7, CppCodeProvider, Version=10.0.0.0 , Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /namespace:MyTestApp

但是,我收到如下错误消息

错误:开关/语言的值“microsoft.visualc.cppcodeprovider7,cppcodeprovider,版本=10.0.0.0,文化=中性,publickeytoken=b03f5f7f11d50a3a”无效。没有为该语言定义代码域提供程序。

我知道我已经安装了 CppCodeProvider 作为 Visual Studio 安装的一部分。我也试过 /language:cpp 无济于事。对于同一个 XSD,我能够在 C# 中生成代码而没有任何问题。

有谁知道我做错了什么?

【问题讨论】:

    标签: c++-cli codedom svcutil.exe


    【解决方案1】:

    svcutil.exe 的 MSDN Library 文章中明确说明:

    /language:<language>

    值:c#、cs、csharp、vb、 visualbasic, c++, cpp

    默认值:csharp

    缩写:/l

    注意:该开关仅支持 C++ 对于随附的代码提供程序 Visual Studio 2005 SP1。

    我认为当时是 .NET 2.0 SDK 附带的。没有其他问题,从那时起语言没有改变。为什么不使用 csharp?能够在 .NET 中轻松混合语言是其重要资产之一。

    【讨论】:

    • 我们有很多非托管 c++ 代码。我们正在转换为托管(C# 是最终目标)。但是,不能接受全部或不改变的成本。因此,我们需要一种方法来进行非托管调用。使用编组进行互操作非常昂贵,因为我们有需要来回移动的大型数据结构(组合)。取而代之的是,我想有选择地控制编组(仅进入所需的数据结构)。这类似于适配器设计模式。因此我们需要使用 CIL。
    • 注意:该开关仅支持 Visual Studio 2005 SP1 附带的代码提供程序的 C++。这是否意味着,我必须安装 Visual Studio 2005 SP1 才能让 CPP 代码提供程序正常工作?
    猜你喜欢
    • 2012-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多