1

我有一个控制台应用程序,它从数据库为我构建了一些默认类。构建文件后,我希望能够刷新我的文件夹并在我的类库中查看新文件。

但是,无论我做什么,文件都不会显示,除非我进入并手动添加现有文件。VS2010有没有办法查看文件夹并将该文件夹中的任何内容添加到项目中?例如:

文件夹 > File1.cs、File2.cs、File3.cs、File4.cs

VS2010 看到

文件夹 > File1.cs

如何让 VS2010 显示这些新类?

4

6 回答 6

2

您的问题是您只会看到 .csproj 文件中包含和引用的文件。总的来说,这是一件好事,因为它使您可以最终控制项目中考虑的内容或不考虑的内容。不过,这会给您带来问题,因为插入到您的项目目录中的创建文件没有被引用。正如您所提到的,您可以手动包含文件,但我知道您希望此过程是自动的。

在我看来,解决这个问题的最佳方法是使用设计时 T4 模板,而不是让项目创建文件。设计时 T4 模板是类似于 Razor 之前的 ASP.NET 视图的文件,允许在项目中生成代码。您可以访问您的数据库,格式化您的类,然后将 .cs 文件直接输出到您的项目中,而无需构建它。这非常方便,因为它使您可以根据输出捕获可能出现的编译时错误,而无需进行完整的构建。

可以在此处找到有关使用 T4 的更多信息。

在这里可以找到一个很好的演练。

于 2013-01-31T08:18:14.883 回答
1
  1. 选择可以找到文件的项目
  2. 在您的解决方案资源管理器顶部,您可以选择“显示所有文件”
  3. 选择您的文件并包括

可以通过修改项目的 .csproj/vbproj 文件从另一个应用程序或脚本自动添加它们

    <Compile Include="My Project\MyClass.vb" />

这必须在正确的项目组中完成。

于 2013-01-31T08:15:11.410 回答
1

没有亲自尝试过,但是您应该可以使用它来做到这一点..

首先使用应用程序的解决方案获取对项目的引用,然后使用 Visual Studio 自动化框架 (DTE):

ProjectItems p = Project.ProjectItems;
p.AddFromFile("File1.cs");

取自:http: //msdn.microsoft.com/en-us/library/envdte.projectitems.addfromfile.aspx 我会进一步阅读。

于 2013-01-31T08:29:47.297 回答
0

我认为这不是直接可能的。您可以编写一个模板文件 (t4)来创建您的 cs 文件,并在运行转换文件时将它们添加到项目中。

为了在构建之后/之前运行转换文件,您可以编写一个构建前/构建后事件。

于 2013-01-31T08:15:31.800 回答
0

这将要求您创建一个 VS 加载项。您可以在此处找到一个示例...

于 2013-01-31T08:16:30.293 回答
0

好的,所以我有一个控制台应用程序,它正在从数据库为我构建一些默认类。

你不能让这个应用程序把所有的类都写在一个文件中,Proxy.cs比如说Entities.cs. 然后每次重新生成文件并重建项目时,您都可以访问新类。

于 2013-01-31T08:25:14.680 回答