Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在Visual Studio项目中自动包含生成的文件_C#_Visual Studio_Scaffolding - Fatal编程技术网

C# 在Visual Studio项目中自动包含生成的文件

C# 在Visual Studio项目中自动包含生成的文件,c#,visual-studio,scaffolding,C#,Visual Studio,Scaffolding,我正在编写一个能够在VisualStudio中创建SQL文件的应用程序。用户将通过PackageManager控制台输入命令,该控制台将生成sql脚本并将其存放在Visual Studio项目中的特定目录中 我遇到的问题是,当生成文件时,它们出现在文件系统中,但不在VisualStudio中。这当然是意料之中的,因为我需要在解决方案资源管理器中主动包含这些文件,但这不是我想要的。我希望文件在生成后立即“神奇地”出现在解决方案资源管理器中 我看到过类似问题的各种解决方案,主要是对.csproj文件

我正在编写一个能够在VisualStudio中创建SQL文件的应用程序。用户将通过PackageManager控制台输入命令,该控制台将生成sql脚本并将其存放在Visual Studio项目中的特定目录中

我遇到的问题是,当生成文件时,它们出现在文件系统中,但不在VisualStudio中。这当然是意料之中的,因为我需要在解决方案资源管理器中主动包含这些文件,但这不是我想要的。我希望文件在生成后立即“神奇地”出现在解决方案资源管理器中

我看到过类似问题的各种解决方案,主要是对.csproj文件进行了如下修改

<Compile Include="Sql\**\*.sql" />

但这不是我要找的。我所追求的类似于实体框架或MVCSCapfolding的工作方式,当命令在PMC中运行时,文件/文件夹会神奇地落入项目中。我知道这需要T4模板,但对于这样一个简单的问题来说,这似乎太复杂了

我应该证明在创建文件时没有巫毒,只是简单的File.Create()之类的东西

我愿意接受任何建议


谢谢。

我想,T4是最好的选择。你不想为你想做的事而烦恼

话虽如此,我想知道为什么需要将文件添加到解决方案资源管理器中?它是出于源代码管理的目的吗?(通常您不希望对自动生成的文件进行源代码管理,而是希望对原始模型进行源代码管理)。 请注意,您可以始终单击“全部显示”按钮,文件将显示在解决方案资源管理器中,而不是实际成为解决方案的一部分

查看答案,找到适合我的解决方案。我有相同的用例,代码输出平面文件,我需要在项目中包含这个输出

在.csproj文件末尾添加以下内容:

<Target Name="BeforeBuild">
    <ItemGroup>
        <Content Include="Sql\**\*.sql" />
    </ItemGroup>
</Target>


你好,谢谢你的回答。原因正是出于源代码管理的目的。生成的sql文件只是开发人员在生成后正确填写的模板。然而,我仍然觉得这是一个非常特殊的要求。您正在谈论的包管理器控制台是什么(NuGet?)。SQLs是如何生成的,由谁生成的?如何以及由谁使用它们?它是一个有效的数据库迁移工具。您可以在控制台中键入一些参数(是的,“nuget”控制台),指定版本号和迁移名称,然后该工具将弹出迁移sql模板,以填充特定迁移所需的实际sql。非常类似于实体框架工具集,但由于复杂的原因,我们不使用它。这是一个会重复多次的过程吗?我的意思是,当你迁移时,你从A迁移到B,然后忘记了A。所以你生成了很多脚本,运行它们,然后再见。是这样吗?(正如我所说的,关于你最初的问题,T4似乎是一条出路。我正试图了解更多关于流程本身的细节,看看我是否可以给你一个不同的角度来看待这个问题)