c# - 将 Roslyn 与 Nuget 结合使用时避免大量的包和二进制文件

标签 c# nuget roslyn

我正在尝试在我的应用程序中使用 Roslyn。我为此添加了 NuGet 包 (Microsoft.CodeAnalysis.CSharp)。事实证明,这个包依赖于许多其他包:

enter image description here

它们中的大多数似乎未在 .NET Framework 上使用(例如 System.Runtime,它提供诸如 Int32 的类型)。

enter image description here

这些包的大小与实际使用的内容之间存在着令人难以置信的对比。许多数据似乎是翻译:

enter image description here

(我并不是说有人在这里做得不好。我没有足够的能力做出那个决定。我只是想找出如何处理这个问题,见下文。)

将所有这些检查到源代码管理中似乎是个坏主意。如果我每隔几个月更新一次这些包,那么存储库将随着时间的推移从所有这些文件中膨胀 GB。我也担心 IDE 的速度,坦率地说,我担心自己会在这个庞大的软件包海洋中感到困惑。

由于安全问题和依赖另一家公司的持续服务来构建我们的源代码,因此无法使用包恢复。我所说的“其他公司”是指我需要信任 Microsoft 和包作者随时可用,不会向我发送病毒,也不会删除导致我的应用程序崩溃的旧版本。如果我只下载一次,或者每隔几个月下载一次,曝光率就会大大降低。

我怎样才能最大程度地减少使用 Roslyn 对源代码控制的影响?

我真的希望我能够将这些包放入源代码管理中。我希望有一种方法可以删除我不需要的所有包,并将它们限制在 bin 文件夹中。

最佳答案

您不应该将包文件夹检查到源代码管理;那会让你难过。听起来您真正的问题是担心 nuget.org 或现有包的可靠性。如果这是一个问题,您可能需要考虑将 .nupkg 文件存储在您可以控制并可以将它们放在身边的地方。你可能想看看 these instructions了解如何运行自己的服务器,这可以像“拥有网络驱动器”一样低技术含量。

您还可以 checkin .nupkg 文件,然后使用 that 作为您的提要,这至少会减少您需要管理的文件数量。至少与未压缩的文件夹相比,这些文件夹会更小且经过压缩。

关于c# - 将 Roslyn 与 Nuget 结合使用时避免大量的包和二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43052851/

相关文章:

c# - Roslyn - 找不到 SyntaxNode.ReplaceNode()

c# - 自动化表单字段输入和网页结果检查的程序

c# - 创建包时找不到文件

nuget - 如何在没有 .nuspec 的情况下将文件添加到 csproj NuGet 包中的 build 文件夹

c# - 如何使用 Roslyn 验证特定 Actor 阵容是否有效

c# - 如何强制 CSharpCodeProvider 针对特定目标框架进行编译?

c# - 多线程环境下的异常处理

c# - 使用 MonoMac 创建一个简单的 Hello World 应用程序

c# - 为什么 ForEach Linq Extension 在 List 上而不是在 IEnumerable 上

c# - 如何使用 nuget 安装 ASP.NET 5 IIS Loader