2012-09-09 96 views
3

我正在編寫一個應用程序,可以在Visual Studio中創建SQL文件。用戶將通過包管理器控制檯輸入命令,該控制檯將生成sql腳本並將它們存放在Visual Studio項目中的特定目錄中。自動在Visual Studio項目中包含生成的文件

我遇到的問題是,生成文件時,它們出現在文件系統上,但不在Visual Studio中。這當然是需要的,因爲我需要然後去解決方案資源管理器中積極地包含這些文件,但這不是我想要的。我希望文件在生成後立即出現在解決方案資源管理器中。

我已經看到了類似的問題的各種解決方案主要特色的.csproj的文件的修訂,如該

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

,但是這不是我要找的。我所追求的內容與例如Entity Framework或MvcScaffolding的工作方式類似,當命令在PMC中運行時,文件/文件夾會神奇地放入項目中。我意識到這會在T4模板上運行,但對於像這樣的簡單問題,這似乎太複雜了。

我應該有資格證明在創建文件時沒有voodoo,只是普通的舊File.Create()的東西。

我願意接受任何建議。

謝謝。

回答

0

恕我直言,T4是要走的路。你不想爲older technologies打擾你正在做的事情。

話雖如此,我想知道爲什麼需要將文件添加到解決方案資源管理器中?它是用於源代碼控制的目的嗎? (通常你不想源代碼控制自動生成的文件,你想源控制原始模型)。 請注意,您始終可以單擊「全部顯示」按鈕,這些文件將顯示在解決方案資源管理器中,而實際上並不屬於解決方案的一部分。

+0

您好,感謝答案。原因恰恰在於Source控制的目的。生成的sql文件只是開發人員將在後代中正確填寫的模板。 –

+0

很好。然而,它仍然是我非常奇怪的要求。你正在談論的這個包管理器控制檯是什麼(NuGet?)。 SQL如何以及由誰生成?他們如何以及由誰使用? – Vitaliy

+0

它實際上是一個數據庫遷移工具。你可以在控制檯中輸入一些參數(是的,「nuget」控制檯),指定版本號和遷移名稱,該工具會啓動遷移sql模板,並填入特定遷移所需的實際SQL 。非常類似於實體框架工具集,但由於複雜的原因,我們沒有使用它。 –

5

結賬this回答爲我工作的解決方案。我有相同的代碼輸出平面文件的用例,我需要將此輸出包含在項目中。

在你的.csproj文件的末尾添加以下內容:

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