2016-02-18 69 views
1

我正在寫一個C#項目中,我有以下目錄結構:MSBuild:如何在鏈接的父目錄中包含一堆文件?

LibFoo 
| 
---- LibFoo.Shared 
| | 
| ---- [a bunch of .cs files] 
| 
---- LibFoo.Uwp 
| | 
| ---- LibFoo.Uwp.csproj 
| 
---- LibFoo.Wpf 
    | 
    ---- LibFoo.Wpf.csproj 

我很好奇,想知道,是否有可能包括從共享目錄中的C#文件,讓他們在出現Visual Studio中的解決方案資源管理器?我知道你可以通過爲<Compile>標籤設置Link屬性來做到這一點,但是我不太清楚在項目中有多少個.cs文件時該怎麼做。

澄清,這是我的csproj文件的相關部分:

<PropertyGroup> 
    <!-- Compile everything in this dir --> 
    <CompileRoot>..\LibFoo.Shared</CompileRoot> 
</PropertyGroup> 

<ItemGroup> 
    <Compile Include="$(CompileRoot)\**\*.cs"> 
     <Link> <!--What goes here?--> </Link> 
    </Compile> 
</ItemGroup> 

感謝您的幫助!

編輯:忘了提及,它們包含在父目錄中的事實是相關的,因爲這就是爲什麼它們不在Visual Studio中顯示的原因。如果他們出現在VS中,我不會做任何這種鏈接的東西。

編輯2:shamp00的建議,我已經試過這樣:

<ItemGroup> 
    <Compile Include="$(CompileRoot)\**\*.cs"> 
     <Link>$([MSBuild]::MakeRelative('$(CompileRoot)', '%(FullPath)'))</Link> 
    </Compile> 
</ItemGroup> 

不幸的是,雖然它似乎是輸出很好,當我從項目運行Message任務,鏈接似乎在Visual Studio中簡單地被忽略。

編輯3:對於那些有興趣在攝製-ING這個問題,你可以從GitHub repository克隆來源:

git clone [email protected]:jamesqo/typed-xaml 
cd typed-xaml 

之後,你可以打開Visual Studio中的解決方案,看看影響你自己。相關代碼位於this文件中。

回答

1

像這樣的東西應該工作:

<Target Name="Default"> 
    <ItemGroup> 
     <Parent Include="..\LibFoo.Shared\**\*.cs"/> 
     <Compile Include="@(Parent)"> 
      <Link>..\LibFoo.Shared\%(Parent.Filename).cs</Link> 
     </Compile> 
    </ItemGroup> 
    <Message Text="%(Compile.Identity) is linked to %(Compile.Link)"/> 
</Target> 

編輯

this answer,下面的作品...

<Compile Include="..\LibFoo.Shared\**\*.cs"> 
    <Link>.\thisDummyFolderNameDoesNotMatter</Link> 
</Content> 

編輯2

我不確定如何使它與您的外部common.props文件一起使用,但它可以用於將以下內容直接添加到Typed.Xaml.Wpf.csproj

<ItemGroup> 
    <Compile Include="..\Typed.Xaml\**\*.cs"> 
    <Link>notimportant</Link> 
    </Compile> 
</ItemGroup> 
+0

謝謝!不幸的是,雖然這個消息似乎正確顯示,但他們似乎並沒有在Visual Studio中顯示出來。 –

+0

這很煩人。試試我的編輯。 – shamp00

+0

不幸的是,它仍然不能正常工作...... :(如果你有興趣獲得repro,可以[克隆GitHub倉庫](https://github.com/jamesqo/typed-xaml)並自己嘗試。相關代碼在[this](https://github.com/jamesqo/typed-xaml/blob/master/src/Common。道具)文件。 –

相關問題