所以我的问题非常简单.我有一些文件要复制到构建输出目录,无论是调试版本还是发布版本.我能找到的所有信息都是关于旧的json配置方法.任何人都有一个使用csproj与dotnetcore的例子?
Mar*_*ich 102
根据您的需求,有很多方法可以实现您的目标.
最简单的方法是有条件地设置元数据(CopyToOutputDirectory/ CopyToPublishDirectory)项(假设.txt是None项而不是Content,如果它不起作用,请尝试<Content>改为):
<ItemGroup Condition="'$(Configuration)' == 'Debug'">
<None Update="foo.txt" CopyToOutputDirectory="PreserveNewest" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
如果需要更多控制,最通用的方法是添加挂钩到csproj文件中的构建过程的自定义目标:
<Target Name="CopyCustomContent" AfterTargets="AfterBuild">
<Copy SourceFiles="foo.txt" DestinationFolder="$(OutDir)" />
</Target>
<Target Name="CopyCustomContentOnPublish" AfterTargets="Publish">
<Copy SourceFiles="foo.txt" DestinationFolder="$(PublishDir)" />
</Target>
Run Code Online (Sandbox Code Playgroud)
这会将文件复制到相应的目录中.有关该<Copy>任务的更多选项,请参阅其文档.要将此限制为某些配置,您可以使用以下Condition属性:
<Target … Condition=" '$(Configuration)' == 'Release' ">
Run Code Online (Sandbox Code Playgroud)
此Condition属性既可以应用于<Target>元素,也可以应用于任务元素<Copy>.
Mr *_*ose 53
虽然这有助于我对我的问题进行排序,但它并不适用于子目录中的所有文件.我也用Content Include而不是Content Update;
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp2.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<Content Include="layouts\*.*">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
</ItemGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)
Dom*_*nik 23
假设您assets的根目录中有一个文件夹。您可以随意命名。这只是一个例子:
你的项目.csproj
<Project Sdk="Microsoft.NET.Sdk">
<ItemGroup>
<AssetsSourceFiles Include="assets/**/*.*"/>
</ItemGroup>
<Target Name="CopyCustomContent" AfterTargets="AfterBuild">
<Copy SourceFiles="@(AssetsSourceFiles)" DestinationFolder="$(OutDir)" SkipUnchangedFiles="true" />
</Target>
</Project>
Run Code Online (Sandbox Code Playgroud)
这仅将assets文件夹的内容复制到输出根目录而不将其包装到assets文件夹中。但是如果你想和文件夹本身一起复制,你可以使用下面的代码:
<Project Sdk="Microsoft.NET.Sdk">
<ItemGroup>
<Content Include="assets\**\*.*">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)
Cha*_*ehn 14
将其放在.csproj文件中,用所需的文件路径替换nlog.config.然后只需保存它并构建您的项目:
<ItemGroup>
<Content Update="Nlog.config">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
例如,您有名为test.txt的文件。要将“始终复制”设置为该文件,您需要将此部分添加到 .csproj 文件中:
<ItemGroup>
<None Include="test.txt">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
我要求选择 HTML 模板在客户端和服务器端都可以使用(Handlebars js)
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp2.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<Content Update="wwwroot\html-templates\**\*.*">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
</ItemGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)
这会将完整目录复制到具有正确名称的子目录中。
<ItemGroup>
<Content
Include="..\libs\x64\**\*.*"
CopyToOutputDirectory="Always"
TargetPath="x64\%(Filename)%(Extension)"
/>
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
41878 次 |
| 最近记录: |