亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

有沒有一種方法可以自動將內容文件包含到asp.net項目文件中?

有沒有一種方法可以自動將內容文件包含到asp.net項目文件中?

富國滬深 2019-11-26 15:03:48
我經常在ASP.NET項目中添加很多內容文件(主要是圖像和js)。我正在使用VS發布系統,并且在發布時,直到將新文件包含在項目中之后,才會發布新文件。我想自動包含指定目錄中的所有文件。有沒有一種方法可以指定哪些目錄應自動包含在csproj文件或其他任何地方?
查看完整描述

3 回答

?
qq_遁去的一_1

TA貢獻1725條經驗 獲得超8個贊

我知道老線程,但是我找到了一種方法,但我一直忘了它,而在上次尋找它的搜索中,我偶然發現了這個問題。我發現最好的方法是使用.csproj文件中的BeforeBuild目標。


<Target Name="BeforeBuild">

    <ItemGroup>

        <Content Include="**\*.less" />

    </ItemGroup>

</Target>

VS 2010不會涉及此部分,它可確保每次構建項目時文件都作為內容包含在內。


查看完整回答
反對 回復 2019-11-26
?
慕碼人2483693

TA貢獻1860條經驗 獲得超9個贊

您只需擴展您的網站.csproj文件即可。只需使用遞歸通配符添加內容根文件夾:


...

<ItemGroup>

    <!-- your normal project content -->

    <Content Include="Default.aspx" />


    <!-- your static content you like to publish -->

    <Content Include="Images\**\*.*" />

</ItemGroup>

...

這樣做會使此文件夾以及下面的所有內容在解決方案瀏覽器中可見。


如果嘗試通過指定隱藏解決方案瀏覽器中的文件夾


<Content Include="Images\**.*.*">

    <Visible>false</Visible>

</Content>

它不會被發布。


更新資料


正如您已經發現的,一旦您觸摸解決方案中的文件夾,通配符將被替換,因為VS項目并非旨在包含任意內容。


因此,您將必須確保文件夾及其內容永遠不會在VS中被修改-添加或刪除文件只能在文件系統上完成...這就是您想要的,因為我了解您的問題。


如果該文件夾可以在VS中隱藏,但我找不到隱藏它并發布的方法,將會更容易。


另一種不成功的方法是按CreateItem任務包含文件夾。這導致文件夾的內容被發布到\ bin \ app.publish \ ...,并且無法說服將其與.csproj中的內容項一起發布,因此我沒有在我的答案中提出它。


查看完整回答
反對 回復 2019-11-26
?
慕后森

TA貢獻1802條經驗 獲得超5個贊

對于使用Chris的答案有問題的人,這是Visual Studio 2012及更高版本的解決方案:


<Target Name="ContentsBeforeBuild" AfterTargets="BeforeBuild">

  <ItemGroup>

    <Content Include="images\**" />

  </ItemGroup>

</Target>

就像克里斯在回答中提到的那樣- 即使您手動在目標目錄中四處逛逛(添加/刪除文件),Visual Studio 也不會涉及到此<Target>部分。


請注意,您應該在其中包含文件的子目錄(在上述情況下為images)。Visual Studio / MSBuild會將這些文件放在項目結構中的同一目錄中。如果不使用子目錄,則文件將放置在項目結構的根目錄下。


有關通配符的快速說明:


**遞歸地表示所有內容(文件,子目錄和其中的文件)

*.ext將ext在頂級目錄中包含所有帶有擴展名的文件,但不包括子目錄

例如,*.ext可能是*.png,*.js等。任何文件擴展名都可以使用

**\*.ext將包括ext頂級目錄和所有子目錄中所有帶有擴展名的文件。

請參閱“ 如何使用Nant / Ant命名模式”中的答案?有關示例的更完整說明。

為了完成操作,請注意,使用<Target>和不使用之間有所不同。


通過這種<Target>方法,Visual Studio 將不會在解決方案資源管理器中顯示文件。


<Target Name="ContentsBeforeBuild" AfterTargets="BeforeBuild">

  <ItemGroup>

    <Content Include="images\**" />

  </ItemGroup>

</Target>

非<Target>方法將指示Visual Studio 在解決方案資源管理器中顯示文件。這一缺點是,對自動目錄的任何操作都將導致Visual Studio覆蓋通配符條目。還應注意,以下方法僅在VS中打開“解決方案/項目”后才會更新“解決方案資源管理器”。甚至解決方案資源管理器的“刷新”工具欄按鈕也不會執行此操作。


<ItemGroup>

  <Content Include="images\**" />

</ItemGroup>


查看完整回答
反對 回復 2019-11-26
  • 3 回答
  • 0 關注
  • 703 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號