2017-03-10 86 views
1

由於VS2017返回到csproj,我再次能夠添加文件「作爲鏈接」...不!`視覺工作室2017添加爲鏈接內容文件(aspnetcore)

當我鏈接一個文件,我也希望它被複制到解決方案文件夾(不是輸出目錄,只是解決方案),例如js文件,webpack配置文件等,我有他們共享和「鏈接」。但爲了讓視覺工作室真正「看到」這些內容,我必須將它們複製到解決方案中。我在csProj文件的BeforeTargets =「Build」事件中執行此操作。那是我在project.json更改之前做的(在project.json期間,我根本沒有這樣做)。

但是......現在我發現,當我重新打開解決方案時,它說「鏈接文件重複」並且不加載文件。這是正確的,因爲文件在構建過程中被複制。這用於工作,因爲以前的Web應用程序csproj是聲明式列出項目中的所有字段。現在它看起來是目錄,只需添加任何內容。 任何想法如何使這項工作再次?

很抱歉,如果它是不明確的,我可以進一步發展,但S.O希望我繼續提問短

的感謝!

更新:我已重新安裝VS 2017.轉載的案件。同樣的錯誤。現在我要給你們更詳細: 1.我添加了一個鏈接文件,的csproj這樣做:

<ItemGroup> 
    <None Include="..\..\..\..\Proyects\SomeProject\src\core.module.ts" Link="app\core\core.module.ts" /> 
    </ItemGroup> 
  • 這表明在解決方案資源管理:
  • enter image description here

  • 我修改的csproj物理地複製到目標文件夾。這個資源不是一個cs文件,但是它被編譯。我需要VS能夠身體有它:

    <目標名稱= 「CopyLinkedContentFiles」 BeforeTargets = 「構建」> <複製SourceFiles = 「%(Content.Identity)」 DestinationFiles =「%(Content.Link) ! 「SkipUnchangedFiles =」 真」 OverwriteReadOnlyFiles = 「真」 條件= 「%(Content.Link)'= ''」/> < /目標>

  • 刷新解決方案: 「複製鏈接項」。

  • 更多幾個備註: a。這發生在css文件 b。有了ts文件......它並不是一成不變的。只是完全忽略了副本

    +0

    你應該能夠只是將它們包括在項目中,如果你選擇的鏈接的屬性應該有一個「副本輸出」選項。那是你在說什麼? –

    +0

    嗨!好吧,不。這些文件是許多項目中共享的打字稿文件。 TS文件應該以vs /副本鏈接/可見到項目文件夾/ NOT到輸出(我不需要輸出這些文件。 – user5328504

    +0

    如果我不將它們添加到項目文件夾中,VS和webpack無法編譯它們。 ...:'( – user5328504

    回答

    3

    好吧,我把它關了,但它不好。

    首先,讓我們瞭解問題所在。 1.添加CONTENT(js,ts,css,images)文件「作爲鏈接」 2.文件需要在物理上存在。爲什麼?在經典的Web中,您需要輸出目錄中的這些資源,因此只有在運行應用程序時才需要它們。由於地雷是一個webapi +角度應用程序,因此我需要對這些文件進行大量工作,並且它們必須在物理上可用於我的IDE。首先,webpack需要編譯它們,我有更少的sass文件也被編譯。我也做鉻調試...文件需要在那裏...所以你做一個MSBuild任務將文件從源位置移動到目的地。必須從源文件中再次複製文件(如果是正確的話)。這是一種標準做法,不是我自己的破解 3.在重新加載時,visual studio會將鏈接和tryes(虛擬)添加到項目結構中。 現在,這裏的問題......文件已經存在,因爲你強迫他們在那裏的2點

    爲什麼這部作品在2015年的原因是因爲在的csproj 2015年不檢查文件夾結構列出其內容。文件應該在csproj中聲明以便在項目結構中。現在,2017年使用了csproj和舊的「網站」項目的組合,該項目將列出目錄內容。自2017年VS「看到」的文件,然後嘗試添加他們時,它就會confussed ...

    所以我周圍的工作是改變我的csproj這樣:

    1. 排除鏈接文件 < - 這是來自vs2015
    2. 是什麼改變了添加鏈接的申請
    3. 複製鏈接的文件

    看起來像這樣: REMOVE

    <ItemGroup> 
        <None Remove="app\core\somefile.ts" /> 
        </ItemGroup> 
    

    ADD。

    <ItemGroup> 
        <None Include="..\..\..\..\Projects\Core\somefile.ts"> 
         <Link>app\core\somefile.ts</Link> 
        </None> 
    

    複印在BUILD

    <Target Name="CopyLinkedContentFiles" BeforeTargets="Build"> 
        <Copy SourceFiles="%(None.Identity)" DestinationFiles="%(None.Link)" SkipUnchangedFiles="true" OverwriteReadOnlyFiles="true" ContinueOnError="true" Condition="'%(None.Link)' != ''" /> 
        </Target> 
    

    我也想提一提,我改進了一點是遞歸的,所以我不與在那裏的所有引用結束了,所以我的第2點實際上看起來像這樣的:

    <None Include="..\..\..\..\Projects\Core\**\*.*"> 
        <Link>app\Core\%(RecursiveDir)%(FileName)%(Extension)</Link> 
    </None> 
    

    後與此戰鬥的許多天,我必須說,我不是100%滿意的csproj 2015年的征程xproj 2017年的csproj 2017年我認爲這是一個很好的哈思做,但他們screwe很多程序員用它的處理方式。我仍然喜歡它,但它讓我(和其他許多人)遭受了很多痛苦,並且在相似的事情上浪費了很多天。我遇到的這個問題只是衆多文檔中過時的項目名稱變更等問題之一。