我一直想知道在引用第三方程序集时最佳做法是什么.前一段时间我问了一个问题" 依赖关系和参考文献:我究竟应该参考什么"并且接受了一些思考,但我并不完全相信.我有一个第三方组装需要建立我的项目,根据我到目前为止所读到的,我应该只参考构建我的项目所需的组件.这留下了问题第三方程序集的运行时依赖项.如果我引用它们,引用列表也会变得很大(因为有几个依赖项)并且包含很多程序集,我不知道什么做了,哪些与我的项目无关.我也是我想避免在任何这些方法中使用公共方法,只使用主要的第三方程序集.我怎样才能以合适的方式做到这一点?任何帮助都会受到赞赏,因为我很困惑.
为了让我知道我在这里处理的是第三方库使用hibernate和log4net以及办公室互操作程序集.
谢谢.
我需要从webservice返回一个复杂类型,并构造了MyComplexType类,它实现了IMyComplexType接口.现在在我的webservice中,我有一个方法应该返回一个实现IMyComplexType的对象,如下所示:
[WebMethod]
public IMyComplexType GetMyComplexType()
{
IMyComplexType myCt = new MyComplexType();
...
return myCt;
}
Run Code Online (Sandbox Code Playgroud)
一切都编译好,但是当我运行webservice时,它会抛出一个异常,如下所示:
System.NotSupportedException: Cannot serialize interface MyWebService.IMyComplexType.
Run Code Online (Sandbox Code Playgroud)
这是设计还是我遗漏了一些东西.我可以以某种方式装饰我的类或界面以允许这个吗?我是否必须消除所有接口,并且只能使用具体的,也许是抽象的基类来使用.net webservices来实现这一点?
编辑:
这是我尝试序列化的接口:
public interface ICustomer
{
long Id {get; set;}
string Name {get; set;}
string EmailAddress {get; set;}
}
Run Code Online (Sandbox Code Playgroud) 我想知道在构建我的项目时要包括什么.我有一个库,我需要参考我的项目来构建,但该库本身有10个依赖项.我是否应该引用这些依赖项,还是应该使用post build事件将它们复制到输出目录?
什么是最佳做法?
我发现包含所有这些依赖项令人困惑,因为项目在没有它们的情况下编译得很好 - 它们是否被称为运行时依赖项?我的引用变得杂乱,依赖性与我的项目无关,即使它们被用在我所包含的某些库中.
我正在使用Visual Studio.
有人可以给我一些有关如何做到这一点的见解.
谢谢.
我想知道Unittesting和using语句是否真的可以齐头并进,因为无法模拟在using语句中实例化的一次性对象.我如何能够有效地单元测试包含以下using语句的方法?
public void MyMethod()
{
using(MyDisposableClass disp = new MyDisposableClass())
{
...
}
}
在进行单元测试时,是否仅使用语句被禁止?
任何评论赞赏.
我想知道什么是最佳实践,涉及到依赖关系以及应该如何完成发布.在我的情况下,我有一个依赖于log4net的库,我想知道是否应该发布log4net.dll(将log4net引用设置为copy local)以及该版本?
我可以简单地说明应该在GAC中安装log4net吗?
调试时我需要从构建的目标目录启动一个外部程序,我想知道它是否可以使用相对路径来完成.
作为一个后期制作活动,我有以下内容:
IF NOT "$(ConfigurationName)"=="Debug" GOTO End :CopyExecutable copy "$(SolutionDir)\Source\Lib\MyExecutable.exe" "$(TargetDir)" :End
我需要在调试时运行MyExecutable.exe,因此在项目属性的调试选项卡中,我将"启动外部程序"设置为MyExecutable.exe,但在运行调试时出现故障.似乎我需要为此工作提供完整的路径.
有没有办法使用相对路径来做到这一点?
我有一个方法,我想单元测试,其中有文件系统调用,我想知道如何去做.我已经查看了具有文件系统依赖性的单元测试代码,但它没有回答我的问题.
我正在测试的方法看起来像这样(c#)
public void Process(string input)
{
string outputFile = "output.txt";
this.Transform(input, Resources.XsltFile, outputFile);
if ((new FileInfo(outputFile)).Length == 0)
{
File.Delete(outputFile);
}
}
Run Code Online (Sandbox Code Playgroud)
我正在模拟Transform(..)方法不向文件输出任何内容,因为我正在对Process方法进行单元测试而不是Transform(..)方法,因此不存在output.txt文件.因此if检查失败.
我该怎么做呢?我应该在文件io周围创建一些包装器,我也会模拟出来吗?
.net ×5
dependencies ×2
unit-testing ×2
build ×1
debugging ×1
dispose ×1
file-io ×1
interface ×1
log4net ×1
reference ×1
release ×1
web-services ×1