ASP.NET Core: Exclude or include files on publish
在
1 2 3 4 5 6 7 8 9 10 11 | { "exclude": [ "node_modules", "bower_components" ], "publishExclude": [ "**.xproj", "**.user", "**.vspscc" ] } |
ASP.NET Core 1.1中的本节在哪里(没有
From documentation: if you wish to specify, for example, some files to get published with your app, you can still use the known mechanisms in
csproj for that (for example, theelement).
- 总是,
- 保留最新
- 决不
注意,输出文件夹也有类似的
示例(从此处开始):
1 2 3 4 5 6 7 8 9 | <ItemGroup> <None Include="notes.txt" CopyToOutputDirectory="Always" /> <!-- CopyToOutputDirectory = { Always, PreserveNewest, Never } --> <Content Include="files\\**\\*" CopyToPublishDirectory="PreserveNewest" /> <None Include="publishnotes.txt" CopyToPublishDirectory="Always" /> <!-- CopyToPublishDirectory = { Always, PreserveNewest, Never } --> </ItemGroup> |
如果您对
在Visual Studio版本15.3和更高版本的
1 2 3 | <ItemGroup> <Content Update="appsettings*.json" CopyToPublishDirectory="Never" /> </ItemGroup> |
在Visual Studio 2017 15.3之后
编辑.csproj文件以手动排除文件/文件夹不被发布
1 2 3 4 | <ItemGroup> <Content Remove="src\\**" /> <Content Remove="node_modules\\**" /> </ItemGroup> |
参考:https://www.danielcrabtree.com/blog/273/fixing-the-duplicate-content-error-after-upgrading-visual-studio-2017
使用Visual Studio 2017(在15.6.5中进行测试),您可以在解决方案资源管理器中右键单击该文件并将Build Action设置为None。
它将像这样更新您的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <ItemGroup> <Content Remove="appsettings.Development.json" /> <Content Remove="appsettings.json" /> <Content Remove="npm-shrinkwrap.json" /> <Content Remove="package.json" /> <Content Remove="tsconfig.json" /> </ItemGroup> <ItemGroup> <None Include="appsettings.Development.json" /> <None Include="appsettings.json" /> <None Include="npm-shrinkwrap.json" /> <None Include="package.json" /> <None Include="tsconfig.json" /> </ItemGroup> |
希望这可以帮助。
对于Visual Studio 2019,我设法使用以下代码从发布输出中排除了一个名为" dummy"的wwwroot子文件夹(包括" dummy"的所有子文件夹):
1 2 3 4 5 | <ItemGroup> <Content Update="wwwroot\\dummy\\**\\*"> <CopyToPublishDirectory>Never</CopyToPublishDirectory> </Content> </ItemGroup> |
注意:要求是将wwwroot及其子文件夹保留在项目中,但在发布时将其排除在外。
我注意到其中包含几个文件的文件夹没有被发布-我尝试右键单击项目中的文件夹以查看是否可以选择一个选项来将文件夹包含在部署中-该文件夹不存在,但是我确实找到了我选择文件夹中的文件,并标记它们以在部署时进行复制,它将在过程中复制文件并创建其文件夹。
如果您的文件夹中有文件,这会有所帮助,但如果您的文件夹为空,则不会有帮助。
就我而言,在调试过程中需要在本地使用local.settings.json,但我不希望在Release版本或Publish过程中将其包含在WebDeploy zip文件中:
1 2 3 4 5 6 7 8 | <ItemGroup> <Content Include="..\\local.settings.json" Link="local.settings.json" Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> <Content Include="..\\local.settings.json" Link="local.settings.json" Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'"> <CopyToOutputDirectory>Never</CopyToOutputDirectory> </Content> </ItemGroup> |
**
编辑.csproj文件以手动排除文件/文件夹不被发布。
你也可以参考这个
对于Web部署,请参阅https://blogs.msdn.microsoft.com/webdev/2010/04/22/web-deployment-exception-files-and-folders-via-the-web-applications-project-file/。
对于升级现有的.NET Core 1.0项目或使用.NET Core 1.1,您可以阅读https://blogs.msdn.microsoft.com/dotnet/2016/11/16/announcing-net-core-1-1/。