我想在我的项目中包含WinJS源代码。它附带了*.js
和*.css
文件的缩小版本。为了节省空间,我想仅包含Release configurations
的缩小版本。
到目前为止我想出的是:
<Content Include="WinJS\css\*.css;WinJS\js\*.js" Condition="$(Configuration) == 'Debug'">
<Link>WinJS\%(RecursiveDir)%(FileName)%(Extension)</Link>
</Content>
<Content Include="WinJS\css\*.min.css;WinJS\js\*.min.js" Condition="$(Configuration) == 'Release'">
<Link>WinJS\%(RecursiveDir)%(FileName)%(Extension)</Link>
</Content>
有两个问题:
Debug Configuration
还包含.min.*
个文件。那将是一个小问题。RecursiveDir
那样的文件的父文件夹丢失了Release Configuration
中,应删除.min
部分,以便我可以在代码中使用一个名称引用文件(<script src="/WinJS/js/WinJS.js"/>
)项目中的预期结果应始终为:
WinJS/css/ui-light.css
WinJS/css/ui-dark.css
WinJS/js/WinJS.js
来自.min
中的Release Configuration
版本或Debug Configuration
中的非缩小版本。
结合Include
和Exclude
?
答案 0 :(得分:0)
%(RecursiveDir)项目元数据仅在您使用wildchar **时可用。 请参阅MSBuild Well-known Item Metadata
的文档我不使用WinJS但是如果在您需要引用文件js和css文件的地方使用链接元数据,这可能是您的解决方案:
<Content Include="WinJS\**\*.css;WinJS\**\*.js" Exclude="WinJS\**\*.min.css;WinJS\**\*.min.js" Condition="$(Configuration) == 'Debug'" >
<Link>WinJS\%(RecursiveDir)%(FileName)%(Extension)</Link>
</Content>
<Content Include="WinJS\**\*.min.css;WinJS\**\*.min.js" Condition="$(Configuration) == 'Release'">
<Link>WinJS\%(RecursiveDir)$([System.String]::Copy("(Filename)").Replace(".min",""))%(Extension)</Link>
</Content>