dr *_*ain 36 copy-local visual-studio
我可以在Visual Studio中将"复制本地"的默认选项设置为False吗?在大多数情况下,当我添加一个dll作为项目的依赖项时,我希望将Copy Local属性设置为False.默认情况下,它是True.有没有办法更改Visual Studio的默认行为?(2008年)
ya2*_*a23 27
实际上,你可以.你需要几件事:
.targets使copylocal(<Private>标记,准确)为false的文件..csproj文件中导入目标.您可以在最后一行添加它,在关闭</Project>标记之前,它看起来像<Import Project="..\Build\yourtarget.targets" />.现在,具有此目标的每个项目都默认禁用了copylocal.
缺点是您需要修改每个csproj文件,包括新文件.您可以通过修改VS项目模板来解决新项目问题.而不是Class.cs在博客文章中描述,您需要修改Class.vstemplate(在相同的zip文件中).
通过这种方法,还有一个问题 - 路径本身.如果在新生成的csproj文件中使用硬编码相对路径,则它们可能是错误的(除非您具有平面项目结构).
您可以:
必须有更好的解决方案,但还没有找到.
我们不使用.targets文件(如ya23的回答中所示),因此我们只需.csproj在文本编辑器中手动编辑项目文件,并将<Private>元素添加到引用中,如下所示:
<Reference Include="[...]">
<Private>False</Private>
[...]
</Reference>
Run Code Online (Sandbox Code Playgroud)
该值<Private>元素中的"复制本地"属性的值相匹配.例如,如果<Private>设置为False,则"Copy local"也为false.
从msbuild v 15开始,您可以在包含您的源的根文件夹中复制一个名为Directory.Build.props的文件:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemDefinitionGroup>
<Reference>
<Private>False</Private>
</Reference>
<ProjectReference>
<Private>False</Private>
</ProjectReference>
</ItemDefinitionGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)
没事做!这与Visual Studio 2017以及vNext Build一起很好地工作。可能您必须关闭Visual Studio,然后再打开解决方案才能使文件生效。
| 归档时间: |
|
| 查看次数: |
25054 次 |
| 最近记录: |