3 回答

TA貢獻(xiàn)1725條經(jīng)驗(yàn) 獲得超8個(gè)贊
我知道老線程,但是我找到了一種方法,但我一直忘了它,而在上次尋找它的搜索中,我偶然發(fā)現(xiàn)了這個(gè)問題。我發(fā)現(xiàn)最好的方法是使用.csproj文件中的BeforeBuild目標(biāo)。
<Target Name="BeforeBuild">
<ItemGroup>
<Content Include="**\*.less" />
</ItemGroup>
</Target>
VS 2010不會(huì)涉及此部分,它可確保每次構(gòu)建項(xiàng)目時(shí)文件都作為內(nèi)容包含在內(nèi)。

TA貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超9個(gè)贊
您只需擴(kuò)展您的網(wǎng)站.csproj文件即可。只需使用遞歸通配符添加內(nèi)容根文件夾:
...
<ItemGroup>
<!-- your normal project content -->
<Content Include="Default.aspx" />
<!-- your static content you like to publish -->
<Content Include="Images\**\*.*" />
</ItemGroup>
...
這樣做會(huì)使此文件夾以及下面的所有內(nèi)容在解決方案瀏覽器中可見。
如果嘗試通過指定隱藏解決方案瀏覽器中的文件夾
<Content Include="Images\**.*.*">
<Visible>false</Visible>
</Content>
它不會(huì)被發(fā)布。
更新資料
正如您已經(jīng)發(fā)現(xiàn)的,一旦您觸摸解決方案中的文件夾,通配符將被替換,因?yàn)閂S項(xiàng)目并非旨在包含任意內(nèi)容。
因此,您將必須確保文件夾及其內(nèi)容永遠(yuǎn)不會(huì)在VS中被修改-添加或刪除文件只能在文件系統(tǒng)上完成...這就是您想要的,因?yàn)槲伊私饽膯栴}。
如果該文件夾可以在VS中隱藏,但我找不到隱藏它并發(fā)布的方法,將會(huì)更容易。
另一種不成功的方法是按CreateItem任務(wù)包含文件夾。這導(dǎo)致文件夾的內(nèi)容被發(fā)布到\ bin \ app.publish \ ...,并且無法說服將其與.csproj中的內(nèi)容項(xiàng)一起發(fā)布,因此我沒有在我的答案中提出它。

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超5個(gè)贊
對(duì)于使用Chris的答案有問題的人,這是Visual Studio 2012及更高版本的解決方案:
<Target Name="ContentsBeforeBuild" AfterTargets="BeforeBuild">
<ItemGroup>
<Content Include="images\**" />
</ItemGroup>
</Target>
就像克里斯在回答中提到的那樣- 即使您手動(dòng)在目標(biāo)目錄中四處逛逛(添加/刪除文件),Visual Studio 也不會(huì)涉及到此<Target>部分。
請(qǐng)注意,您應(yīng)該在其中包含文件的子目錄(在上述情況下為images)。Visual Studio / MSBuild會(huì)將這些文件放在項(xiàng)目結(jié)構(gòu)中的同一目錄中。如果不使用子目錄,則文件將放置在項(xiàng)目結(jié)構(gòu)的根目錄下。
有關(guān)通配符的快速說明:
**遞歸地表示所有內(nèi)容(文件,子目錄和其中的文件)
*.ext將ext在頂級(jí)目錄中包含所有帶有擴(kuò)展名的文件,但不包括子目錄
例如,*.ext可能是*.png,*.js等。任何文件擴(kuò)展名都可以使用
**\*.ext將包括ext頂級(jí)目錄和所有子目錄中所有帶有擴(kuò)展名的文件。
請(qǐng)參閱“ 如何使用Nant / Ant命名模式”中的答案?有關(guān)示例的更完整說明。
為了完成操作,請(qǐng)注意,使用<Target>和不使用之間有所不同。
通過這種<Target>方法,Visual Studio 將不會(huì)在解決方案資源管理器中顯示文件。
<Target Name="ContentsBeforeBuild" AfterTargets="BeforeBuild">
<ItemGroup>
<Content Include="images\**" />
</ItemGroup>
</Target>
非<Target>方法將指示Visual Studio 在解決方案資源管理器中顯示文件。這一缺點(diǎn)是,對(duì)自動(dòng)目錄的任何操作都將導(dǎo)致Visual Studio覆蓋通配符條目。還應(yīng)注意,以下方法僅在VS中打開“解決方案/項(xiàng)目”后才會(huì)更新“解決方案資源管理器”。甚至解決方案資源管理器的“刷新”工具欄按鈕也不會(huì)執(zhí)行此操作。
<ItemGroup>
<Content Include="images\**" />
</ItemGroup>
- 3 回答
- 0 關(guān)注
- 714 瀏覽
添加回答
舉報(bào)