开发.NET程序的最佳实践似乎是:在开发过程中永远不要参考GAC的dll。
但是,我应该如何让实际部署的产品引用GAC中的dll?例如,如果我的产品是一个非常简单的Windows应用程序,那么我该如何编写代码以便单个部署的.exe文件从GAC引用System.Windows.Forms.dll
?
我是.NET开发的新手,所以我可能会遗漏一些非常基础的东西。
答案 0 :(得分:1)
您可以在Add References
对话框中添加列表中的引用。这会为您的.csproj
添加如下所示的条目:
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
</ItemGroup>
您不会在项目中运送这些dll。您可以发送.net框架的redist设置,但如果您运送程序的物理副本,那么这不是一个好主意,而不是您提供下载。将它们与您的计划一起包含可能是侵犯版权的行为。当然,对于Mono,未来的windows / .net版本等需要使用不同的System.Windows.Forms
程序集,如果您分发了自己的此文件副本,这将无效。
这些程序集将从GAC加载。但这很好,因为它们毕竟是.net框架的一部分。编译的引用看起来与mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
类似。这样,框架将选择正确的版本,并确保引用程序集来自正确的创建者。
不使用GAC的准则是指您自己或第三方程序集。您随附了应用程序,并将它们放在与主程序相同的目录中。只需在少数特定情况下将其添加到GAC即可。
答案 1 :(得分:0)
简单的答案是不要从GAC引用System.Windows.Forms.dll
。请在您的应用程序中包含该DLL。
<强>更新强>
如果您希望在GAC中添加对dll的引用,可以使用常用的“添加引用”对话框来执行此操作。
浏览C:\Windows\assembly
是您可以选择这些参考的地方。