我正在尝试使用protobuf-net在C#项目中使用protobuf,并且想知道将这个组织到Visual Studio项目结构中的最佳方法是什么.
当手动使用protogen工具生成C#代码时,生活似乎很容易,但感觉不对.
我希望.proto文件被认为是主要的源代码文件,生成C#文件作为副产品,但在C#编译器参与之前.
选项似乎是:
我一直在努力与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) 从函数返回多个相同类型的对象时,首选的容器类型是什么?
返回一个简单的数组(比如MyType [])是不是很好,或者你应该将它包装在一些通用容器中(比如ICollection <MyType>)?
谢谢!
我有一个我标记为Serializable的类,具有Uri属性.如何在不创建string类型属性的情况下让Uri序列化/反序列化?
各种WebSockets草案之间的协议差异是否有任何摘要?
浏览器支持级别仍然存在,所以仅考虑RFC是不够的.
显然Sec-WebSocket-Version发生了变化,我知道早期的格式非常不同.但是,我的意思是协议中更微妙的变化.例如,框架中的hybi-10(v8)表明扩展的有效载荷长度存储为16/63,而不是RFC 6455(v13)中的16/64.
那么:有变化的摘要吗?
或者(如果我们忽略非常早期的草案和版本号),协议是否基本相同,并且草案主要是对规范文本的更正?
我有一个现有的解决方案涉及多个project.json(和相应的xproj)项目,我已经工作了一段时间.它在Visual Studio 2015中运行良好,但无法在VS 15(预览版)中加载,只显示每个加载图标的失败.没有打印消息.
发生了什么,我该如何解决?
假设我需要使用动态查询过滤通用列表(List<string> l; var x = l.Where(*dynamic query*))
我如何使用LINQ做到这一点?(目前在数据视图上使用行过滤器)
我看过scott g发布的帖子:但它似乎不适用于使用的对象IEnumerable(包括通用列表)
谁能提出任何想法?
如何在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) 我正在研究一个自然语言解析器,它用英语检查一个句子,并提取一些信息,如姓名,日期等.
例如:" 让我们下周二下午5点在海滩见面. "
所以输出将是这样的:" 让我们在海滩的1700小时在15/09/2009见面 "
基本上,我想知道的是,JAVA是否有任何框架或库可用于执行这些操作,例如从句子中解析日期并提供具有某种指定格式的输出.
此致,Pranav
谢谢你的回复.我查看了几个NLP,如LingPipe,OpenPL,Stanford NLP.我想问他们为java的日期解析做了什么.
我有以下课程:
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子句的行为有如此大的差异?
我正在以这种方式执行命令:
var Command = new SqlCommand(cmdText, Connection, tr);
Command.ExecuteNonQuery();
Run Code Online (Sandbox Code Playgroud)
在命令中有一个错误,但.NET不会抛出任何错误消息.我怎么知道命令没有正确执行,以及如何获得异常?
c# ×6
.net ×4
linq ×2
ado.net ×1
datetime ×1
ienumerable ×1
java ×1
nlp ×1
oop ×1
outer-join ×1
parsing ×1
project.json ×1
protobuf-net ×1
protocols ×1
return-type ×1
sql ×1
sqlcommand ×1
websocket ×1