我正在尝试使用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) 我是一名.NET开发人员,我在C#工作了将近3.5年.我想了解网络服务器的工作原理,我不是指65,000英尺的概述.我想了解Web服务器的内部工作原理.
有哪些好资源可以学习Web服务器的工作原理?
我正在寻找SQL Server日志文件的一些清晰度.我有一个较大的数据库(2GB),最近没有因任何原因备份.数据库的日志文件增长到大约11GB,根据我的理解,这是数据库中发生的所有事务和语句.
我的问题:
是什么原因导致数据库日志文件被刷新?"冲洗"究竟意味着什么?在大型日志文件上执行文件收缩或数据库收缩会产生什么后果?
您可以为想要编写编程或脚本语言的人提供哪些提示?我并不担心如何编程或设计编译器,而是如何使用工具和代码生成器快速开发编译器.
上次我尝试用c ++编写它,状态和语法几乎和写实际逻辑一样长.我知道以下工具会有所帮助.
我以为我可以生成c ++代码并使用gcc编译.使用上面的工具,您估计编写程序或脚本语言需要多长时间?
早在学习编写编译器时就已反复询问过这个问题的变化.以下是该主题的SO资源的不完整列表.
compiler-construction interpreter programming-languages scripting-language
我听说它说"设计继承"是"困难的",但我从来没有发现过这种情况.任何人(以及任何人,我的意思是Jon Skeet)都可以解释为什么这可能是困难的,陷阱/障碍/问题是什么,为什么凡人的程序员不应该尝试它,只是让他们的课程密封以保护无辜者?
好吧,我嘲笑后者 - 但我很想知道是否有人(包括Jon)真的遇到"继承设计"的困难.我真的从来没有把它视为一个问题,但也许我忽略了一些我认为理所当然的东西 - 或者在没有意识到的情况下搞砸了什么!
编辑:感谢到目前为止所有优秀的答案.我相信共识是,对于典型的应用程序类(WinForm子类,一次性实用程序类等),不需要考虑任何类型的重用,更不用说通过继承重用了,而对于库类,考虑重用是至关重要的.通过设计中的继承.
我并没有真的想到一个WinForm类来实现一个GUI对话框,作为一个有人可能会重用的类 - 我有点认为它是一个一次性的对象.但从技术上讲,它是一个类,有人可能会继承它 - 但它不太可能.
很多大规模的发展,我所做的一直是基础库和框架类库,因此设计为通过继承的重用是至关重要的-我只是从来没有认为这是"难",它只是为.;-)
但我也从未考虑过与WinForms等常见应用任务的"一次性"类别相比.
当然,欢迎设计继承的更多提示和陷阱; 我也试着投入一些.
我有一个win表单UI,看起来像一个典型的计算器.当然,我不想为每个数字按钮(0-9)重写相同的逻辑.我希望能够知道单击了哪个按钮,因此我可以根据它的文本属性执行计算.我应该只创建一个接受按钮对象作为参数的方法来促进代码重用吗?有没有更好的办法?我想听听Win Form应用程序开发人员如何处理这个问题.我试图让我的逻辑脱离UI.
谢谢!
有一些关于IP安全等的及时帖子,但我找不到专门针对算法的帖子.在我目前的一个项目中,我们决定采用离线注册密钥系统的路线.
我想我们最终的用户群大部分都是诚实的,所以我认为我们没有太多担心.另一方面,如果没有大量的汗水和眼泪,我宁愿不让休闲饼干获得访问权限.
那么,如何生成(和验证)密钥有哪些选择?硬件键控很可能是因为安装模型是从Intranet服务器上的samba共享运行的.此外,密钥应该多长时间?
其次,验证算法被反射出来的危险有多大,即使它被混淆了?改为在非托管代码中编写算法会更好吗?
我正在使用Spring Security来保护webapp.URL的安全性如下:
<security:http entry-point-ref="authenticationEntryPoint">
<security:intercept-url pattern="/" access="ROLE_ANONYMOUS" />
<security:intercept-url pattern="/assets/**/*" access="ROLE_ANONYMOUS" />
...
<security:intercept-url pattern="/**" access="ROLE_USER" />
<security:anonymous granted-authority="ROLE_ANONYMOUS" />
</security:http>
Run Code Online (Sandbox Code Playgroud)
我有一个过滤器,在某些情况下需要将用户重定向到特殊页面.但是,该页面需要资产目录中的图像和CSS文件,遗憾的是,这些文件也会被重定向到该特殊页面.我不希望过滤器手动检查每个URL模式,因为我的实际URL配置要长得多,而且我还想允许其他页面.
有没有办法从过滤器中确定给定页面需要哪些角色?如果不需要ROLE_ANONYMOUS,我可以选择不重定向.
使用带有C++的数据库是一个真正的混乱,当我转移到Java时能够使用统一的系统来抽象整个层(也就是Hibernate),这是令人耳目一新的.
DB有几个C++抽象层,但它们通常是特定于供应商的,只有一个包含真实C API的薄层.有没有人遇到过类似于hibernate for C++的东西,或者知道正在查看这个问题域的组或开源项目.
c# ×2
.net ×1
algorithm ×1
branch ×1
c++ ×1
calculator ×1
flush ×1
freeze-thaw ×1
hibernate ×1
inheritance ×1
interpreter ×1
java ×1
licensing ×1
persistence ×1
protobuf-net ×1
security ×1
spring ×1
spring-mvc ×1
sql ×1
sql-server ×1
tfs ×1
webserver ×1
winforms ×1