我开始重构我的应用程序的文件结构,因为它有各种明确定义的部分,将它们放在不同的文件夹中会使整个事情更容易理解/维护。
当我在 Visual Studio 中创建文件夹,将 *.cs 文件移动到其中,然后尝试编译时,我以为我会遇到问题。但是不,VS 并没有窥视,它运行良好。
更具体地说,我在我的项目下面创建了一个名为“SharedCode”的文件夹,然后将一个名为 SQLDBHelper.cs 的文件拖到该文件夹中(我没有复制它,我移动了它)。我认为对其中代码的引用,例如:
DataTable dtPriceComplianceResults = SQLDBHelper.ExecuteSQLReturnDataTable(ReportRunnerConstsAndUtils.SUMMARY_STOREDPROC, . . .
...将停止工作,因为他们以前在同一级别上找到了该文件(直接在项目下方,“ReportRunner”),现在它位于“ReportRunner\SharedCode”中
但它大步前进 - 编译并在我运行应用程序时成功拨打电话。
我也有点期待 Visual Studio(或 Resharper?)会在 SQLDBHelper 中改变这一点:
namespace ReportRunner
...对此:
namespace ReportRunner.SharedCode
......但它没有。为什么这可以无缝地工作,这是否意味着我可以创建其他项目文件夹并将文件拖到他们的任意位置并期望所有代码仍然知道在哪里查找它调用的代码?
更新
虽然它编译并运行良好,但当我让 Resharper 猎犬在它上面松动时(通过 Resharper > Inspect > Code Issues in Solution),我得到了一些沿着这些线的手指:
Project ReportRunner
PriceCompliance\PriceComplianceRpt.cs:13 Namespace does not correspond to file location, should be: 'ReportRunner.PriceCompliance'
如果我默认并让 Resharper “修复问题”,则命名空间从“命名空间 ReportRunner ”更改为“命名空间 ReportRunner.PriceCompliance ”
但是,由于没有这种更改重新锐化命名空间,一切都可以正常工作,将文件夹名称附加到命名空间有什么好处?