CSC.EXE参考外部.dll文件(csc.exe reference external .dll

2019-06-24 17:33发布

我试图做一个简单的c#使用程序Growl C# API

我试图编译我的程序以两种不同的方式:

1)我一直在我.dll文件在同一目录作为我.cs文件。 比我跑

csc /r:Growl.Connector.dll,Growl.CoreLibrary.dll /out:test.exe *.cs

它编译罚款,并运行良好。

2)现在,我已经建立了我的当前工作目录名为里面的目录growl ,并保持我所有的.dll有引用。

现在,当我尝试使用下面的命令编译它

csc /r:"D:\Modified\Growl_NET_Connector_SDK\libraries\growl\Growl.Connector.dll","D:
\Modified\Growl_NET_Connector_SDK\libraries\growl\Growl.CoreLibrary.dll" /out:test.exe *.cs

它编译罚款,但是当我试图运行它发生下面提到的例外。

Unhandled Exception: System.IO.FileNotFoundException: Could not load file or assembly 'Growl.Connector, Version=2.0.0.0, Culture=n
eutral, PublicKeyToken=980c2339411be384' or one of its dependencies. The system cannot find the file specified.
 at GrowlNotification.Program.Main(String[] args)

所以,我的问题是什么是引用正确的方法.dll文件中csc时文件是在外部文件夹中。

这里是目录结构的第二种情况。

Answer 1:

所以,我的问题是什么是引用.dll文件中CSC时,文件是一个外部文件夹的正确方法。

你已经在构建时引用它们。 你只需要使其可在执行时也一样,但其复制到同一目录下的可执行文件,当你想运行它。

你也可以使用调查全局程序集缓存如果这些签名的程序集,而我个人倒只保持可执行与它所依赖的库棒。



Answer 2:

可以将这些使用/ lib和/参考命令行编译时切换添加。

http://msdn.microsoft.com/en-us/library/s5bac5fx.aspx

但是 (报价从文章)

使用/ lib中的替代方法是复制到工作目录中的任何所需的程序集; 这将允许您通过简单的组装名称/参考。 然后,您可以删除工作目录中的组件。 由于在集清单没有指定的依赖程序集的路径,应用程序可以在目标计算机上启动,并且会发现,并在全局程序集缓存使用汇编。

因为编译器可以参考的装配并不意味着公共语言运行库将能够找到并在运行时加载程序集。 请参见运行时如何定位,了解如何为引用的程序运行搜索的细节组件。

所以乔恩斯基特的回答是好。 (我只是添加此提供更多的信息比我能在一个评论,而不是答案。乔恩的回答是最好的IMO)



Answer 3:

您可以创建符号链接 ,所以你只需要保持他们在一个位置更新到您的库文件夹的组件。



文章来源: csc.exe reference external .dll file
标签: c# windows csc