给出带有文件夹的aspnet项目:
/
/sql
/WebApp
/Client
/wwwroot
/Views
在project.json上我使用了
"publishOptions": {
"include": [
"..\\sql",
"wwwroot",
"Views",
"web.config"
]
}
在dotnet publish
之后有sql
,wwwroot
和Views
个文件夹。
迁移到csproj(Microsoft.NET.Sdk.Web)后,我得到了
<None Update="..\sql\**\*;wwwroot\**\*;Views\**\*">
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</None>
在msbuild15 /t:publish
之后(cli对我不起作用)有wwwroot
,Views
和Client
,里面只有json
个文件。来自sql
的文件已复制但已展平。
我也尝试将其更改为:
<Content Include="..\sql\**" CopyToPublishDirectory="PreserveNewest" />
<Content Remove="Client\*" CopyToPublishDirectory="Never" />
并获得相同的输出。
如何删除Client
并保留sql
的文件夹结构?
答案 0 :(得分:10)
更新
使用VS 2017&gt; = 15.3或.NET CLI版本&gt; = 2.0时,有一项新功能会自动为少数已知项目类型添加Link
元数据(包括Content
) 。这可以像:
<Content Include="..\sql\**" LinkBase="sql" />
原件:
您可以使用:
<ItemGroup>
<Content Remove="Client\**" />
<Content Include="..\sql\**" CopyToPublishDirectory="PreserveNewest" Link="sql\%(RecursiveDir)\%(Filename)%(Extension)" />
</ItemGroup>
内容包括项目的链接元数据是使得MSBuild使用项目的相对路径作为目标路径的一些黑客攻击。这是因为&#34;项目锥体之外的项目&#34;如果AssignTargetPath
没有Link
元数据(source),则不会在<Content Remove="..." />
中考虑。
替代<Content Update="Client\**" CopyToPublishDirectory="Never" />
你也可以这样做,以便在VS中包含文件:
public class BoardPanel extends JPanel{
private JLayeredPane lp;
private BufferedImage imageBoard;
private final int WIDTH = 1000;
private final int HEIGHT = 800;
private ArrayList<Slot> slotSet1;
private ArrayList<Slot> slotSet2;
private ArrayList<Slot> slotSet3;
private ArrayList<Slot> slotSet4;
private CheckerSet ch1;
public Checker chc;
public BoardPanel(){
initComponents();
}
private void initComponents(){
lp = new JLayeredPane();
setPreferredSize(new java.awt.Dimension(1500, 1000));
//lp.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
lp.setBorder(javax.swing.BorderFactory.createTitledBorder("asdadsaddadsadasdadsa"));
lp.setMaximumSize(new java.awt.Dimension(1124, 904));
lp.setMinimumSize(new java.awt.Dimension(1124, 904));
try {
imageBoard = ImageIO.read(getClass().getResource("/images/board.jpg"));
} catch (IOException e) {
System.out.println("file error");
}
JLabel label = new JLabel();
label.setVerticalAlignment(JLabel.TOP);
label.setHorizontalAlignment(JLabel.CENTER);
label.setOpaque(true);
label.setBackground(Color.BLACK);
label.setForeground(Color.black);
label.setBorder(BorderFactory.createLineBorder(Color.black));
label.setBounds(0, 0, 50, 50);
lp.add(label,JLayeredPane.DEFAULT_LAYER);
}
public void paintComponent(Graphics g){
//g.drawImage(imageBoard,0,0,null);
}