另一种方法是将项目保留为None 类型。在解决方案资源管理器中,单击要部署的那些并将Content 属性设置为True。
注意:我是在 VS2019 中做的,而且随着版本的不同,事情可能会发生变化。
要让它工作,现在右键单击您的项目,然后选择“卸载项目”。然后右击卸载的项目,选择“Edit project_name.vcxproj”。
在编辑器中,一直到文件底部,并在尾随 </Project> 标记之前插入此目标:
<Target Name="CopyContent" AfterTargets="Build">
<Copy SourceFiles="@(None)" Condition="'%(None.DeploymentContent)' == 'true'" DestinationFolder="$(OutputPath)" ContinueOnError="true" />
</Target>
现在右键单击卸载的项目并选择“重新加载项目”。如果出现提示,请选择保存并关闭。
我还将OutputDirectory 设置为:
$(SolutionDir)bin\$(Configuration)\$(Platform)\
和IntermediateDirectory 到:
$(SolutionDir)obj\$(Configuration)\$(ProjectName)\$(Platform)\
在项目属性常规页面中。这会将输出放在“bin”文件夹中,并将中间体放在解决方案根目录中的“obj”文件夹中。
注意:从命令行运行 MSBuild 时未定义 $(SolutionDir)。您可以使用一个技巧来使用 GetDirectoryNameOfFileAbove 将其定义到 .sln 文件所在的文件夹。 (留给读者作为练习)。此外,看起来他们在 2019 年无论如何都在命令行上正确处理了这个问题。是的 :) $(SolutionDir) 包含一个尾随反斜杠,因此后面没有。每个结果的结尾都必须有一个反斜杠。
现在,如果您拥有 Pro 或更高版本,请不要在每次需要创建项目时都这样做。那会很蹩脚。相反,一旦您按照自己喜欢的方式设置项目,请选择Project -> Export Template。你给它一个名字,下次你想创建一个像那个一样的项目时,只需在“新建项目”对话框中选择该名称。 (在旧版本中,我认为这是Files -> Export Teamplate...。)