C# 如何使msbuild/VS创建包含为生成上的链接的文件的物理副本?
在我的c#VS2012解决方案中,我有3个项目:A、B和c。项目B和c包括来自A的文件(*.js和其他文件),使用以下includeC# 如何使msbuild/VS创建包含为生成上的链接的文件的物理副本?,c#,visual-studio,msbuild,C#,Visual Studio,Msbuild,在我的c#VS2012解决方案中,我有3个项目:A、B和c。项目B和c包括来自A的文件(*.js和其他文件),使用以下include <Content Include="..\A\**\*.js"> <Link>%(RecursiveDir)%(Filename)%(Extension)</Link> </Content> %(RecursiveDir)%(文件名)%(扩展名) 我可以在解决方案资源管理器中的B和C项目中以链接的形式查看A
<Content Include="..\A\**\*.js">
<Link>%(RecursiveDir)%(Filename)%(Extension)</Link>
</Content>
%(RecursiveDir)%(文件名)%(扩展名)
我可以在解决方案资源管理器中的B和C项目中以链接的形式查看A中的所有引用文件
在构建A、B和C之后,我可以在项目B的文件系统中实际看到文件,但在项目C中看不到。我比较了B和C的项目文件,但我看不到任何可以控制此行为的内容。一般来说,我找不到多少关于csproj文件中作为链接包含的文件的行为的控制信息
最后一个问题:
如何使msbuild/VS创建包含在生成中作为链接的文件的物理副本?回答我自己的问题 我按照@Ran的建议去做了(我本来应该这么做的),为了找出区别,我从两个项目中一点一点地删除了一些东西。事实证明,以下几行使第二个项目成为了构建时作为链接包含的文件
<PropertyGroup>
<OutputPath Condition="'$(TeamBuildOutDir)'=='' ">
bin\$(Platform)\$(Configuration)
</OutputPath>
<OutputPath Condition="'$(TeamBuildOutDir)'!='' ">
bin\$(Platform)\$(Configuration)
</OutputPath>
</PropertyGroup>
bin\$(平台)\$(配置)
bin\$(平台)\$(配置)
如果您说project B的行为符合您的要求,而project C则不符合您的要求,那么最好尽量减少.csproj文件(只要问题仍然存在,就可以删除任何文件),然后在问题中发布这两个.csproj文件,以便有人能够找出差异的原因。