Chr*_*ell 23 visual-studio-2008 visual-studio
我有一堆辅助的XML和XSLT文件,我想在visual studio中编辑和管理.
这些文件在逻辑上不属于我的解决方案中的任何代码项目,因此为了将它们整齐地分组,我在visual studio中创建了一个"虚拟"C#dll项目,并在调试/发布版本中禁用它.
我想知道是否有更好的方法来实现相同的结果(即在解决方案资源管理器中显示所有文件).我认为真正想要的是一个视觉工作室项目类型的"仅限内容",但这样的东西不存在(或者我看起来不够努力?).
我已经玩弄了将文件添加为解决方案项目的想法,但之后它们似乎更难管理,因为创建新的"解决方案项目文件夹"实际上并不在磁盘上创建文件夹.
有人有主意吗?
stu*_*uck 22
Visual Studio 2015有一个名为"共享项目"的项目类型,它本质上是一个没有目标的仅限内容的项目.它列在Visual C#下,但它可以用于任何文件.
Chr*_*ell 13
一位工作同事提出了一个解决方案.
他建议手动编辑项目以DefaultTargets从项目中删除(并删除现在未使用的属性的加载).
如果项目中没有目标,MSBuild会抱怨,因此他添加了三个空目标.
最终的项目看起来像这样
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="3.5" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>9.0.30729</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{541463A7-7CFA-4F62-B839-6367178B16BD}</ProjectGuid>
</PropertyGroup>
<ItemGroup>
... files ...
</ItemGroup>
<ItemGroup>
... files ...
</ItemGroup>
<Target Name="Build"/>
<Target Name="Rebuild"/>
<Target Name="Clean"/>
</Project>
Run Code Online (Sandbox Code Playgroud)
不可否认,这个解决方案需要我想要的更多摆弄,但似乎实现了我所追求的目标:即一个不会产生任何构建输出的项目.
Ken*_*itt 10
Andy发布了一个解决方案链接,该解决方案主要适用于我; 基本上从项目文件中删除以下行:
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
Run Code Online (Sandbox Code Playgroud)
并添加以下行:
<Target Name="Build">
<Copy
SourceFiles="@(Content)"
DestinationFiles="@(Content->'$(OutputPath)%(RelativeDir)%(Filename)%(Extension)')" />
</Target>
<Target Name="Clean">
<Exec Command="rd /s /q $(OutputPath)" Condition="Exists($(OutputPath))" />
</Target>
<Target Name="Rebuild" DependsOnTargets="Clean;Build">
</Target>
Run Code Online (Sandbox Code Playgroud)
我还发现禁用项目Debug属性"启用Visual Studio宿主进程"(对于每个配置)阻止生成MyProject.vshost.exe文件.
正如David I. McIntosh在对此答案的评论中指出的那样,如果您的项目是具有多个项目的解决方案的一部分,并且任何其他项目使用与仅内容项目相同的输出路径,则上述Clean目标将删除所有文件在输出路径中,即其他项目的构建输出,因此只有在仅内容项目是构建的第一个项目(在共享相同构建输出路径的项目中)时才是正确的.以下是Clean此方案的更安全,更友好的目标:
<Target Name="Clean">
<Delete Files="@(Content->'$(OutputPath)%(RelativeDir)%(Filename)%(E??xtension)')"/>
</Target>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4447 次 |
| 最近记录: |