将输出二进制文件复制到 xproj 的自定义路径
Copy output binaries to custom path for xproj
我有大约 50 个项目的解决方案。
这些项目有 2 个目标框架:netcore1.1 和 .net 4.6。
所有项目均基于xproj.
所以作为构建结果,我在 bin/$configuration/$targetfw/ 中有二进制文件。
F.ex。在我的例子中,我在 bin/debug/netcoreapp 和 bin/debug/net462 输出中有二进制文件。
但我也需要在 /bin 目录中复制 bin/debug/net462 内容。
如何通过 project.json 中的脚本或其他所有 50 个解决方案项目正确制作它?
如果修复对于 git 源代码控制不可见,那就太好了。
P.s。为什么我需要它?因为VS code map工具直接在bin里找二进制文件
UPD.
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">14.0</VisualStudioVersion>
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
</PropertyGroup>
<Import Project="$(VSToolsPath)\DotNet\Microsoft.DotNet.Props" Condition="'$(VSToolsPath)' != ''" />
<PropertyGroup Label="Globals">
<ProjectGuid>9e2d06cb-21aa-4457-ab44-6e67298037e3</ProjectGuid>
<RootNamespace>SmartDoc.Domain.Document</RootNamespace>
<BaseIntermediateOutputPath Condition="'$(BaseIntermediateOutputPath)'=='' ">.\obj</BaseIntermediateOutputPath>
<OutputPath Condition="'$(OutputPath)'=='' ">.\bin\</OutputPath>
<TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
<SccProjectName>SAK</SccProjectName>
<SccProvider>SAK</SccProvider>
<SccAuxPath>SAK</SccAuxPath>
<SccLocalPath>SAK</SccLocalPath>
</PropertyGroup>
<PropertyGroup>
<SchemaVersion>2.0</SchemaVersion>
</PropertyGroup>
<Import Project="$(VSToolsPath)\DotNet\Microsoft.DotNet.targets" Condition="'$(VSToolsPath)' != ''" />
</Project>
How to make it correctly by script in project.json or smth else for all 50 projcts of solution? And it would be great if fix wont be visible for git source control.
您可以添加自定义 MSBuild 任务以将二进制文件从 bin/$configuration/$targetfw/
复制到 /bin
目录。
为此,卸载您的项目,对其进行编辑,在结束标记前添加以下代码 </Project>
:
<ItemGroup>
<MySourceFiles Include="$(ProjectDir)bin$(Configuration)\**$(ProjectName).dll"/>
</ItemGroup>
<Target Name="TestCopy" AfterTargets="Build">
<Message Text ="Copy file to bin folder." Importance="high"></Message>
<Copy
SourceFiles="@(MySourceFiles)"
DestinationFolder="$(ProjectDir)bin"
/>
</Target>
使用此目标,VS/MSBuild 会将 .dll
文件复制到 /bin
目录。
注意:由于我们必须修改项目文件,此修复必须对 git 源代码管理可见。
更新:
Could I modify f.ex. Microsoft.DotNet.Props file and add your fix with
Target there?
是的,你可以。经过测试,它工作正常。但我需要说明的是,我们不推荐这种解决方案,因为它可能会影响所有导入了 Microsoft.DotNet.targets
的项目。所以大家在使用这个方法的时候要多加注意,要备份那个Microsoft.DotNet.targets
.
希望这对您有所帮助。
我有大约 50 个项目的解决方案。 这些项目有 2 个目标框架:netcore1.1 和 .net 4.6。 所有项目均基于xproj.
所以作为构建结果,我在 bin/$configuration/$targetfw/ 中有二进制文件。 F.ex。在我的例子中,我在 bin/debug/netcoreapp 和 bin/debug/net462 输出中有二进制文件。
但我也需要在 /bin 目录中复制 bin/debug/net462 内容。
如何通过 project.json 中的脚本或其他所有 50 个解决方案项目正确制作它? 如果修复对于 git 源代码控制不可见,那就太好了。
P.s。为什么我需要它?因为VS code map工具直接在bin里找二进制文件
UPD.
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">14.0</VisualStudioVersion>
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
</PropertyGroup>
<Import Project="$(VSToolsPath)\DotNet\Microsoft.DotNet.Props" Condition="'$(VSToolsPath)' != ''" />
<PropertyGroup Label="Globals">
<ProjectGuid>9e2d06cb-21aa-4457-ab44-6e67298037e3</ProjectGuid>
<RootNamespace>SmartDoc.Domain.Document</RootNamespace>
<BaseIntermediateOutputPath Condition="'$(BaseIntermediateOutputPath)'=='' ">.\obj</BaseIntermediateOutputPath>
<OutputPath Condition="'$(OutputPath)'=='' ">.\bin\</OutputPath>
<TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
<SccProjectName>SAK</SccProjectName>
<SccProvider>SAK</SccProvider>
<SccAuxPath>SAK</SccAuxPath>
<SccLocalPath>SAK</SccLocalPath>
</PropertyGroup>
<PropertyGroup>
<SchemaVersion>2.0</SchemaVersion>
</PropertyGroup>
<Import Project="$(VSToolsPath)\DotNet\Microsoft.DotNet.targets" Condition="'$(VSToolsPath)' != ''" />
</Project>
How to make it correctly by script in project.json or smth else for all 50 projcts of solution? And it would be great if fix wont be visible for git source control.
您可以添加自定义 MSBuild 任务以将二进制文件从 bin/$configuration/$targetfw/
复制到 /bin
目录。
为此,卸载您的项目,对其进行编辑,在结束标记前添加以下代码 </Project>
:
<ItemGroup>
<MySourceFiles Include="$(ProjectDir)bin$(Configuration)\**$(ProjectName).dll"/>
</ItemGroup>
<Target Name="TestCopy" AfterTargets="Build">
<Message Text ="Copy file to bin folder." Importance="high"></Message>
<Copy
SourceFiles="@(MySourceFiles)"
DestinationFolder="$(ProjectDir)bin"
/>
</Target>
使用此目标,VS/MSBuild 会将 .dll
文件复制到 /bin
目录。
注意:由于我们必须修改项目文件,此修复必须对 git 源代码管理可见。
更新:
Could I modify f.ex. Microsoft.DotNet.Props file and add your fix with Target there?
是的,你可以。经过测试,它工作正常。但我需要说明的是,我们不推荐这种解决方案,因为它可能会影响所有导入了 Microsoft.DotNet.targets
的项目。所以大家在使用这个方法的时候要多加注意,要备份那个Microsoft.DotNet.targets
.
希望这对您有所帮助。