Tag: 依赖项

为一个现在代表的DateTime制作一个包装器是一个好主意吗?

我最近注意到,使用表示’now’的DateTime作为方法的输入参数,用于模拟和测试目的非常好。 而不是每个调用DateTime.UtcNow方法本身,我在上层方法中执行一次,然后在下层方法中执行。 所以很多需要’now’的方法现在都有一个输入参数DateTime now 。 (我正在使用MVC,并尝试检测一个名为now的参数和modelbind DateTime.UtcNow到它) 所以代替: public bool IsStarted { get { return StartTime >= DateTime.UtcNow; } } 我通常有: public bool IsStarted(DateTime now) { return StartTime >= now; } 所以我的约定是,如果一个方法有一个名为now的DateTime参数,你必须用当前时间来提供它。 当然这归结为惯例,而其他人可以很容易地在其中抛出一些其他DateTime作为参数。 为了使它更加可靠和静态类型,我正在考虑将DateTime包装在一个新对象中,即DateTimeNow。 因此,在最上面的一个层中,我将DateTime转换为DateTime ,当有人试图在正常的DateTime中进行操作时,我们将得到编译错误。 当然你仍然可以解决这个问题,但至少如果你觉得你做错了什么的话。 有没有人进过这条道路? 从长远来看,我没有考虑过任何好的或坏的结果吗?

如何将本机库复制到Visual Studio 2010中的unit testing登台目录

我的项目依赖于我通常通过MSBuild目标复制到输出目录的一些本机库(DLL)。 运行应用程序时没有问题,但我在Visual Studio中编写了一些unit testing,每次运行unit testing时,程序集和可执行文件都会从输出目录复制到暂存文件夹中: C:\path\to\MyProject\TestResults\myWorkStationName 2012-03-20 13_53_56\Out 遗憾的是,本机DLL不会复制到暂存目录中,并且会在每次测试运行时生成暂存目录。 是否有一个MSbuild目标允许我将东西复制到临时目录? PS我不确定“登台目录”是否是正确的术语,所以请原谅我的无知,如果不是:)。

ISEXP:警告:-6248:找不到依赖文件libc.dll或其组件的依赖项之一

这个问题有很多变化,但我的问题是libc.dll 。 我并不担心解决依赖问题。 我想要一个解决方法来避免这种警告。 我的Forms Application中有30个项目。 当我使用InstallshieldLE发布设置时,我收到了ISEXP : warning : -6248: Could not find dependent file libc.dll, or one of its dependencies of component Sample.CommonModules.ChangeUnit_.Primary_output 每个主要输出的警告。 由于这个警告,发布需要更长的时间并且耗费我的时间。 有没有办法可以在InstallshieldLE中绕过这个警告? 我只想摆脱那个警告。 我不介意创建一个模拟libc.dll文件并将其置于允许InstallShieldLE假定它具有该文件的位置。

将C#DLL加载到C ++ / CLI – dependencies目录

我写了一个dll c ++ / cli库,它使用我的其他c#dll库。 当我在调用它的应用程序所在的文件夹中有c#dll时,C ++ / cli库工作正常。 该库最终将加载到许多应用程序中,并且不得将C#dll复制到带有应用程序的目录中。 它必须与c ++ / cli库位于同一个文件夹中,但在这种情况下,我有System.IO.FileNotFoundException。 我的建议是手动加载c#库或更改f.ex的路径。 firefox正在寻找依赖项,但我尝试使用LoadLibrary()和Assembly :: LoadFrom()方法来强制从正确的目录加载。 当然,我将带有dll的目录路径添加到系统PATH。 我在VS2010上工作。

处理可选的依赖项(C#)

我们有一个可选择与TFS集成的应用程序,但由于集成是可选的,我显然不希望所有机器都需要TFS程序集作为要求 。 我该怎么办? 我可以在我的主程序集中引用TFS库,并确保在使用TFS集成时仅引用TFS相关对象。 或者,更安全的选择是在一些单独的“TFSWrapper”程序集中引用TFS库: 一个。 那么我可以直接引用该程序集(只要我小心我所说的) 湾 我应该为我的TFSWrapper程序集公开一组接口来实现,然后在需要时使用reflection实例化这些对象。 1对我来说似乎有风险,另一方面2b似乎过于顶级 – 我基本上是在建立一个插件系统。 当然必须有一个更简单的方法。

如何获得我的C#项目之间的依赖关系图

我有一个相当复杂的应用程序,它被分解为多个组件。 每个组件都有一个包含大量项目的解决方案文件。 所以我喜欢把它想象成一个组件中有多个项目/ dll。 还有一个“共同”组件。 所有其他组件都依赖于“共同”。 所以编译是这样的: “nant component1.compile”将编译“common”然后编译component1,因为component1依赖于“common”。 随着时间的推移,“共同”变得相当大。 我很确定它可以分成几个较小的组件。 然后组件需要仅依赖于这些较小的,破碎的“共同”中的一些。 这有望减少不同组件的编译时间。 所以问题:我想要显示应用程序中所有不同项目之间的依赖关系,同时标记项目所属的组件。 你会怎么做?

如何找到取决于特定依赖项的特定版本的内容?

我在运行应用程序时遇到此错误(不是在编译时): 无法加载文件或程序集’Castle.Windsor,Version = 2.1.0.0,Culture = neutral,PublicKeyToken = 407dd0808d44fbdc’或其依赖项之一。 定位的程序集的清单定义与程序集引用不匹配。 (HRESULTexception:0x80131040) 我的解决方案有许多项目,尽可能使用项目引用,但其中一些项目具有对外部依赖项的程序集引用。 如何轻松找出哪个项目正在寻找这个特定版本的Castle.Windsor.dll ? 我没有那个版本,我试图使用2.5.2(最新),所以我想找到罪魁祸首并更新它以使用最新版本。 提前谢谢了。 UPDATE 我在下面添加了一个已经过消毒的Fusion日志。 它似乎在告诉我, Caliburn.Castle需要Castle.Windsor, Version=2.1.0.0 (这将是一个错误,因为我使用2.5),但Fusion程序集探测实际上找到了Castle.Windsor, Version=2.5.1.0代替。 我理解正确吗? === Pre-bind state information === LOG: User = Barney\neil LOG: DisplayName = Castle.Windsor, Version=2.1.0.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc (Fully-specified) LOG: Appbase = file:///[Debug folder of my exe] LOG: Initial PrivatePath = NULL LOG: Dynamic […]

WPF依赖属性

我很难在WPF中了解依赖属性,也许是因为我正在寻找的用例是非常具体的,没有很好的文档记录。 我有一个看起来像这样的自定义控件(请忽略所有可怕的代码,这是暂时的!): 我在我的主窗口中调用它,如下所示: 并且控件内的代码如下: using System; using System.Windows; using System.Windows.Controls; namespace HydroAccessory.Controls { public partial class FillGraph : UserControl { private float percentage; public float Percentage { get { return percentage; } set { percentage = value; PercentageTB.Text = String.Format(“Fill Percentage: {0}”, percentage.ToString() + “%”); } } public FillGraph() { InitializeComponent(); } } } 我希望能够做的就是在主窗口中的自定义控件调用中说: […]

通过C#评估msbuild任务中定义的项目

我正在尝试生成目标的有向图(点格式),这些目标将以MSBuild项目文件路径作为输入进行调用。 这与ggtools.net中的grand-ui相同 (除了我正在尝试以只读图像开头)。 我希望处理3个案例: 1)目标具有DependsOnTargets属性 2)目标使用Exec任务调用MSBuild 3)目标调用MSBuild任务并传递ItemGroup 我相信我在下面的代码中主要处理#1和#2。 但是,我无法弄清楚如何获取对ItemGroup的引用。 示例MSBuild项目: TargetToInvoke=ParallelTarget1 TargetToInvoke=ParallelTarget2 但是,目标可能跨越多个项目文件。 到目前为止我管理的内容(VS2010 + .NET 4): using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using Microsoft.Build.Evaluation; using Microsoft.Build.Execution; using Microsoft.Build.Framework; namespace ConsoleApplication18 { class Program { static String ProcessMSBuildFile(System.IO.FileInfo file, ProjectTaskInstance referringTask = null) { StringBuilder sb = new StringBuilder(); sb.AppendLine(“subgraph cluster_” […]

发布错误:无法加载文件或程序集“Microsoft.Web.XmlTransform”,Version = 1.4.0.0,Culture = neutral等等或其依赖项之一

我想发布一个MVC项目,我不断收到此错误: System.IO.FileNotFoundException:无法加载文件或程序集“Microsoft.Web.XmlTransform”,Version = 1.4.0.0,Culture = neutral,PublicKeyToken = …或其依赖项之一。 该系统找不到指定的文件。 我搜索并尝试在SO或MSDN上找到的一些解决方案无济于事。 我真的很想要一些建议。 该项目之前已成功发布,但在尝试重新发布我的更新版本后,这个问题突然出现了。