小编Mar*_*ell的帖子

使用protobuf-net的C#项目中的协议缓冲区 - 代码生成的最佳实践

我正在尝试使用protobuf-net在C#项目中使用protobuf,并且想知道将这个组织到Visual Studio项目结构中的最佳方法是什么.

当手动使用protogen工具生成C#代码时,生活似乎很容易,但感觉不对.

我希望.proto文件被认为是主要的源代码文件,生成C#文件作为副产品,但在C#编译器参与之前.

选项似乎是:

  1. 原型工具的自定义工具(虽然我看不到从哪里开始)
  2. 预构建步骤(调用protogen或批处理文件)

我一直在努力与2)上面,因为它一直给我"系统找不到指定的文件",除非我使用绝对路径(我不喜欢强制项目明确定位).

还有一个约定吗?


编辑: 基于@ jon的评论,我重新尝试了预构建步骤方法,并使用Google的地址簿示例使用了这个(protogen的位置现在硬编码):

c:\bin\protobuf\protogen "-i:$(ProjectDir)AddressBook.proto" 
       "-o:$(ProjectDir)AddressBook.cs" -t:c:\bin\protobuf\csharp.xslt
Run Code Online (Sandbox Code Playgroud)

编辑2: 考虑到@ jon的建议,如果它们没有改变就不通过处理.proto文件来最小化构建时间,我已经敲了一个基本工具来检查我(这可能会扩展到一个完整的自定义构建工具):

using System;
using System.Diagnostics;
using System.IO;

namespace PreBuildChecker
{
    public class Checker
    {
        static int Main(string[] args)
        {
            try
            {
                Check(args);
                return 0;
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                return 1;
            }
        }

        public static void Check(string[] args)
        {
            if (args.Length < 3)
            {
                throw new ArgumentException(
                    "Command line must be supplied with source, target and command-line [plus options]");
            }

            string …
Run Code Online (Sandbox Code Playgroud)

c# protocol-buffers protobuf-net visual-studio

16
推荐指数
5
解决办法
2万
查看次数

我应该从函数返回一个数组或集合吗?

从函数返回多个相同类型的对象时,首选的容器类型是什么?

返回一个简单的数组(比如MyType [])是不是很好,或者你应该将它包装在一些通用容器中(比如ICollection <MyType>)?

谢谢!

.net c# return-type

16
推荐指数
6
解决办法
4540
查看次数

如何(xml)序列化uri

我有一个我标记为Serializable的类,具有Uri属性.如何在不创建string类型属性的情况下让Uri序列化/反序列化?

.net c# xml-serialization

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

WebSockets版本之间的协议差异是什么?

各种WebSockets草案之间的协议差异是否有任何摘要?

浏览器支持级别仍然存在,所以仅考虑RFC是不够的.

显然Sec-WebSocket-Version发生了变化,我知道早期的格式非常不同.但是,我的意思是协议中更微妙的变化.例如,框架中的hybi-10(v8)表明扩展的有效载荷长度存储为16/63,而不是RFC 6455(v13)中的16/64.

那么:有变化的摘要吗?

或者(如果我们忽略非常早期的草案和版本号),协议是否基本相同,并且草案主要是对规范文本的更正?

protocols websocket

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

为什么我的project.json/xproj项目没有在Visual Studio 15(预览版)中打开?

我有一个现有的解决方案涉及多个project.json(和相应的xproj)项目,我已经工作了一段时间.它在Visual Studio 2015中运行良好,但无法在VS 15(预览版)中加载,只显示每个加载图标的失败.没有打印消息.

发生了什么,我该如何解决?

.net visual-studio visual-studio-2015 project.json

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

IEnumerable上的动态LINQ?

假设我需要使用动态查询过滤通用列表(List<string> l; var x = l.Where(*dynamic query*))

我如何使用LINQ做到这一点?(目前在数据视图上使用行过滤器)

我看过scott g发布的帖子:但它似乎不适用于使用的对象IEnumerable(包括通用列表)

谁能提出任何想法?

.net linq ienumerable

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

Linq Sub-Select

如何在LINQ中编写子选择.

如果我有一个客户列表和一个订单列表,我希望所有没有订单的客户.

这是我的伪代码尝试:

    var  res = from c in customers 
where c.CustomerID ! in (from o in orders select o.CustomerID) 
select c
Run Code Online (Sandbox Code Playgroud)

c# linq outer-join

15
推荐指数
2
解决办法
4万
查看次数

java的自然语言日期和时间解析器

我正在研究一个自然语言解析器,它用英语检查一个句子,并提取一些信息,如姓名,日期等.

例如:" 让我们下周二下午5点在海滩见面. "

所以输出将是这样的:" 让我们在海滩的1700小时在15/09/2009见面 "

基本上,我想知道的是,JAVA是否有任何框架或库可用于执行这些操作,例如从句子中解析日期并提供具有某种指定格式的输出.

此致,Pranav


谢谢你的回复.我查看了几个NLP,如LingPipe,OpenPL,Stanford NLP.我想问他们为java的日期解析做了什么.

java datetime parsing nlp

15
推荐指数
2
解决办法
7902
查看次数

使用条件运算符时没有隐式转换

我有以下课程:

abstract class AClass { }
class Foo : AClass { }
class Bar : AClass { }
Run Code Online (Sandbox Code Playgroud)

当我试图使用它们时:

AClass myInstance;
myInstance = true ? new Foo() : new Bar();
Run Code Online (Sandbox Code Playgroud)

此代码将无法编译,因为"无法确定条件表达式的类型,因为'CSharpTest.Class1.Foo'和'CSharpTest.Class1.Bar'之间没有隐式转换"

但是以下样本编译好了:

if (true)
{
    myInstance = new Foo();
}
else
{
    myInstance = new Bar();
}
Run Code Online (Sandbox Code Playgroud)

这也没问题:

myInstance = true ? (AClass) new Foo() : new Bar();
Run Code Online (Sandbox Code Playgroud)

要么

myInstance = true ? new Foo() : (AClass) new Bar();
Run Code Online (Sandbox Code Playgroud)

为什么条件运算符和if子句的行为有如此大的差异?

c# oop

15
推荐指数
2
解决办法
4232
查看次数

如何在使用ExecuteNonQuery()时收到错误消息?

我正在以这种方式执行命令:

var Command = new SqlCommand(cmdText, Connection, tr);

Command.ExecuteNonQuery();
Run Code Online (Sandbox Code Playgroud)

在命令中有一个错误,但.NET不会抛出任何错误消息.我怎么知道命令没有正确执行,以及如何获得异常?

c# sql ado.net sqlcommand

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