Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
V
VIZ.Package
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
刘龙飞
VIZ.Package
Commits
2b34d5ba
Commit
2b34d5ba
authored
Jan 04, 2023
by
liulongfei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
編輯
parent
8aa14ee6
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
491 additions
and
0 deletions
+491
-0
VIZ.Package.Common/VIZ.Package.Common.csproj
+7
-0
VIZ.Package.Common/Widgets/LeftRightTextEdit/LeftRightTextEdit.cs
+115
-0
VIZ.Package.Module/ControlObject/FieldEdit/Edit/ListEdit/ListEditPanelCellTemplateSelector.cs
+3
-0
VIZ.Package.Module/ControlObject/FieldEdit/Edit/TripletEdit/TripletEditPanel.xaml
+62
-0
VIZ.Package.Module/ControlObject/FieldEdit/Edit/TripletEdit/TripletEditPanel.xaml.cs
+31
-0
VIZ.Package.Module/ControlObject/FieldEdit/Edit/TripletEdit/TripletEditPanelMode.cs
+29
-0
VIZ.Package.Module/ControlObject/FieldEdit/Edit/TripletEdit/TripletEditPanelModel.cs
+235
-0
VIZ.Package.Module/VIZ.Package.Module.csproj
+9
-0
No files found.
VIZ.Package.Common/VIZ.Package.Common.csproj
View file @
2b34d5ba
...
@@ -50,6 +50,10 @@
...
@@ -50,6 +50,10 @@
<ErrorReport>prompt</ErrorReport>
<ErrorReport>prompt</ErrorReport>
</PropertyGroup>
</PropertyGroup>
<ItemGroup>
<ItemGroup>
<Reference Include="DevExpress.Data.Desktop.v22.1, Version=22.1.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Data.v22.1, Version=22.1.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Printing.v22.1.Core, Version=22.1.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Xpf.Core.v22.1, Version=22.1.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="log4net, Version=2.0.14.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a, processorArchitecture=MSIL">
<Reference Include="log4net, Version=2.0.14.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a, processorArchitecture=MSIL">
<HintPath>..\packages\log4net.2.0.14\lib\net45\log4net.dll</HintPath>
<HintPath>..\packages\log4net.2.0.14\lib\net45\log4net.dll</HintPath>
</Reference>
</Reference>
...
@@ -90,6 +94,7 @@
...
@@ -90,6 +94,7 @@
<DependentUpon>Settings.settings</DependentUpon>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
</Compile>
<Compile Include="Widgets\LeftRightTextEdit\LeftRightTextEdit.cs" />
<EmbeddedResource Include="Properties\Resources.resx">
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
...
@@ -100,5 +105,6 @@
...
@@ -100,5 +105,6 @@
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
</None>
</ItemGroup>
</ItemGroup>
<ItemGroup />
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>
</Project>
\ No newline at end of file
VIZ.Package.Common/Widgets/LeftRightTextEdit/LeftRightTextEdit.cs
0 → 100644
View file @
2b34d5ba
using
DevExpress.Xpf.Editors
;
using
System
;
using
System.Collections.Generic
;
using
System.Linq
;
using
System.Text
;
using
System.Threading.Tasks
;
using
System.Windows.Input
;
using
System.Windows
;
namespace
VIZ.Package.Common
{
/// <summary>
/// 左右拖拽改变值文本编辑器
/// </summary>
public
class
LeftRightTextEdit
:
TextEdit
{
#
region
MouseMinMove
--
鼠标最小移动值
/// <summary>
/// 鼠标最小移动值
/// </summary>
public
double
MouseMinMove
{
get
{
return
(
double
)
GetValue
(
MouseMinMoveProperty
);
}
set
{
SetValue
(
MouseMinMoveProperty
,
value
);
}
}
/// <summary>
/// Using a DependencyProperty as the backing store for MouseMinMove. This enables animation, styling, binding, etc...
/// </summary>
public
static
readonly
DependencyProperty
MouseMinMoveProperty
=
DependencyProperty
.
Register
(
"MouseMinMove"
,
typeof
(
double
),
typeof
(
LeftRightTextEdit
),
new
PropertyMetadata
(
5d
));
#
endregion
#
region
ValueChangeStep
--
值改变步长
/// <summary>
/// 值改变步长
/// </summary>
public
double
ValueChangeStep
{
get
{
return
(
double
)
GetValue
(
ValueChangeStepProperty
);
}
set
{
SetValue
(
ValueChangeStepProperty
,
value
);
}
}
/// <summary>
/// Using a DependencyProperty as the backing store for ValueChangeStep. This enables animation, styling, binding, etc...
/// </summary>
public
static
readonly
DependencyProperty
ValueChangeStepProperty
=
DependencyProperty
.
Register
(
"ValueChangeStep"
,
typeof
(
double
),
typeof
(
LeftRightTextEdit
),
new
PropertyMetadata
(
0.1d
));
#
endregion
/// <summary>
/// 鼠标是否按下
/// </summary>
private
bool
isMouseDown
;
/// <summary>
/// 鼠标最后的值
/// </summary>
private
double
mouseLastPositionX
;
/// <summary>
/// 之前的鼠标形状
/// </summary>
private
Cursor
beforeCursor
;
/// <summary>
/// 鼠标按下
/// </summary>
protected
override
void
OnPreviewMouseLeftButtonDown
(
MouseButtonEventArgs
e
)
{
base
.
OnPreviewMouseLeftButtonDown
(
e
);
this
.
mouseLastPositionX
=
e
.
GetPosition
(
this
).
X
;
this
.
beforeCursor
=
this
.
Cursor
;
this
.
Cursor
=
Cursors
.
ScrollWE
;
this
.
isMouseDown
=
true
;
}
/// <summary>
/// 鼠标弹起
/// </summary>
protected
override
void
OnPreviewMouseLeftButtonUp
(
MouseButtonEventArgs
e
)
{
base
.
OnPreviewMouseLeftButtonUp
(
e
);
this
.
Cursor
=
this
.
beforeCursor
;
this
.
beforeCursor
=
null
;
this
.
isMouseDown
=
false
;
}
/// <summary>
/// 鼠标移动
/// </summary>
protected
override
void
OnPreviewMouseMove
(
MouseEventArgs
e
)
{
base
.
OnPreviewMouseMove
(
e
);
if
(!
this
.
isMouseDown
||
e
.
LeftButton
!=
MouseButtonState
.
Pressed
)
return
;
Point
position
=
e
.
GetPosition
(
this
);
double
move
=
position
.
X
-
this
.
mouseLastPositionX
;
if
(
Math
.
Abs
(
move
)
<
this
.
MouseMinMove
)
return
;
double
.
TryParse
(
this
.
EditValue
?.
ToString
(),
out
double
current
);
this
.
EditValue
=
current
+
(
int
)(
move
/
this
.
MouseMinMove
)
*
this
.
ValueChangeStep
;
this
.
mouseLastPositionX
=
position
.
X
;
}
}
}
\ No newline at end of file
VIZ.Package.Module/ControlObject/FieldEdit/Edit/ListEdit/ListEditPanelCellTemplateSelector.cs
View file @
2b34d5ba
...
@@ -48,6 +48,9 @@ namespace VIZ.Package.Module
...
@@ -48,6 +48,9 @@ namespace VIZ.Package.Module
GridCellData
data
=
(
GridCellData
)
item
;
GridCellData
data
=
(
GridCellData
)
item
;
GridColumnDefinition
definition
=
data
.
Column
.
DataContext
as
GridColumnDefinition
;
GridColumnDefinition
definition
=
data
.
Column
.
DataContext
as
GridColumnDefinition
;
if
(
definition
==
null
)
return
null
;
switch
(
definition
.
Type
)
switch
(
definition
.
Type
)
{
{
case
VizControlFieldType
.
none
:
return
null
;
case
VizControlFieldType
.
none
:
return
null
;
...
...
VIZ.Package.Module/ControlObject/FieldEdit/Edit/TripletEdit/TripletEditPanel.xaml
0 → 100644
View file @
2b34d5ba
<UserControl x:Class="VIZ.Package.Module.TripletEditPanel"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core"
xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
xmlns:dxb="http://schemas.devexpress.com/winfx/2008/xaml/bars"
xmlns:dxg="http://schemas.devexpress.com/winfx/2008/xaml/grid"
xmlns:dxmvvm="http://schemas.devexpress.com/winfx/2008/xaml/mvvm"
xmlns:fcore="clr-namespace:VIZ.Framework.Core;assembly=VIZ.Framework.Core"
xmlns:storage="clr-namespace:VIZ.Package.Storage;assembly=VIZ.Package.Storage"
xmlns:resource="clr-namespace:VIZ.Package.Module.Resource;assembly=VIZ.Package.Module.Resource"
xmlns:local="clr-namespace:VIZ.Package.Module"
d:DataContext="{d:DesignInstance Type=local:TripletEditPanelModel}"
d:Background="White"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"></RowDefinition>
<RowDefinition Height="*"></RowDefinition>
<RowDefinition Height="*"></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="80"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<!-- 值编辑 -->
<TextBlock Text="X:" VerticalAlignment="Center" HorizontalAlignment="Right" Margin="0,0,10,0" Grid.Row="0"></TextBlock>
<dxe:TextEdit Grid.Row="0" Grid.Column="1" Height="30" MaskType="Numeric"
EditValue="{Binding Path=X,Mode=TwoWay}"></dxe:TextEdit>
<TextBlock Text="Y:" VerticalAlignment="Center" HorizontalAlignment="Right" Margin="0,0,10,0" Grid.Row="1"></TextBlock>
<dxe:TextEdit Grid.Row="1" Grid.Column="1" Height="30" MaskType="Numeric"
EditValue="{Binding Path=Y,Mode=TwoWay}"></dxe:TextEdit>
<TextBlock Text="Z:" VerticalAlignment="Center" HorizontalAlignment="Right" Margin="0,0,10,0" Grid.Row="2"></TextBlock>
<dxe:TextEdit Grid.Row="2" Grid.Column="1" Height="30" MaskType="Numeric"
EditValue="{Binding Path=Z,Mode=TwoWay}"></dxe:TextEdit>
<!-- 编辑模式 -->
<RadioButton Grid.Row="0" Grid.Column="2" Content="Single" Margin="10,0,0,0"
IsChecked="True">
<dxmvvm:Interaction.Behaviors>
<dxmvvm:EventToCommand EventName="Checked" Command="{Binding Path=EditModeChangedCommand}"
CommandParameter="{x:Static local:TripletEditPanelMode.Single}"></dxmvvm:EventToCommand>
</dxmvvm:Interaction.Behaviors>
</RadioButton>
<RadioButton Grid.Row="1" Grid.Column="2" Content="Locked" Margin="10,0,0,0">
<dxmvvm:Interaction.Behaviors>
<dxmvvm:EventToCommand EventName="Checked" Command="{Binding Path=EditModeChangedCommand}"
CommandParameter="{x:Static local:TripletEditPanelMode.Locked}"></dxmvvm:EventToCommand>
</dxmvvm:Interaction.Behaviors>
</RadioButton>
<RadioButton Grid.Row="2" Grid.Column="2" Content="Propotional" Margin="10,0,0,0">
<dxmvvm:Interaction.Behaviors>
<dxmvvm:EventToCommand EventName="Checked" Command="{Binding Path=EditModeChangedCommand}"
CommandParameter="{x:Static local:TripletEditPanelMode.Propotional}"></dxmvvm:EventToCommand>
</dxmvvm:Interaction.Behaviors>
</RadioButton>
</Grid>
</UserControl>
VIZ.Package.Module/ControlObject/FieldEdit/Edit/TripletEdit/TripletEditPanel.xaml.cs
0 → 100644
View file @
2b34d5ba
using
System
;
using
System.Collections.Generic
;
using
System.Linq
;
using
System.Text
;
using
System.Threading.Tasks
;
using
System.Windows
;
using
System.Windows.Controls
;
using
System.Windows.Data
;
using
System.Windows.Documents
;
using
System.Windows.Input
;
using
System.Windows.Media
;
using
System.Windows.Media.Imaging
;
using
System.Windows.Navigation
;
using
System.Windows.Shapes
;
using
VIZ.Framework.Core
;
namespace
VIZ.Package.Module
{
/// <summary>
/// TripletEditPanel.xaml 的交互逻辑
/// </summary>
public
partial
class
TripletEditPanel
:
UserControl
{
public
TripletEditPanel
()
{
InitializeComponent
();
WPFHelper
.
BindingViewModel
(
this
,
new
TextEditPanelModel
());
}
}
}
VIZ.Package.Module/ControlObject/FieldEdit/Edit/TripletEdit/TripletEditPanelMode.cs
0 → 100644
View file @
2b34d5ba
using
System
;
using
System.Collections.Generic
;
using
System.Linq
;
using
System.Text
;
using
System.Threading.Tasks
;
namespace
VIZ.Package.Module
{
/// <summary>
/// 三元编辑模式
/// </summary>
public
enum
TripletEditPanelMode
{
/// <summary>
/// 单独改变值
/// </summary>
Single
,
/// <summary>
/// 锁定值
/// </summary>
Locked
,
/// <summary>
/// 按照百分比改变值
/// </summary>
Propotional
}
}
VIZ.Package.Module/ControlObject/FieldEdit/Edit/TripletEdit/TripletEditPanelModel.cs
0 → 100644
View file @
2b34d5ba
using
System
;
using
System.Collections.Generic
;
using
System.Dynamic
;
using
System.Linq
;
using
System.Text
;
using
System.Threading.Tasks
;
using
VIZ.Framework.Core
;
using
VIZ.Package.Domain
;
using
VIZ.Package.Service
;
namespace
VIZ.Package.Module
{
/// <summary>
/// 三元编辑面板模型
/// </summary>
public
class
TripletEditPanelModel
:
EditPanelModelBase
{
public
TripletEditPanelModel
()
{
// 初始化命令
this
.
InitCommand
();
}
/// <summary>
/// 初始化命令
/// </summary>
private
void
InitCommand
()
{
this
.
EditModeChangedCommand
=
new
VCommand
<
TripletEditPanelMode
>(
this
.
EditModeChanged
);
}
// ============================================================
// Property
// ============================================================
#
region
Text
--
文本
private
string
text
;
/// <summary>
/// 文本
/// </summary>
public
string
Text
{
get
{
return
text
;
}
set
{
text
=
value
;
this
.
RaisePropertyChanged
(
nameof
(
Text
));
this
.
OnTextChanged
();
}
}
#
endregion
#
region
EditMode
--
编辑模式
private
TripletEditPanelMode
editMode
;
/// <summary>
/// 编辑模式
/// </summary>
public
TripletEditPanelMode
EditMode
{
get
{
return
editMode
;
}
set
{
editMode
=
value
;
this
.
RaisePropertyChanged
(
nameof
(
EditMode
));
}
}
#
endregion
#
region
X
--
X
值
private
double
x
;
/// <summary>
/// X值
/// </summary>
public
double
X
{
get
{
return
x
;
}
set
{
x
=
value
;
this
.
RaisePropertyChanged
(
nameof
(
X
));
this
.
OnTextChanged
();
}
}
#
endregion
#
region
Y
--
Y
值
private
double
y
;
/// <summary>
/// Y值
/// </summary>
public
double
Y
{
get
{
return
y
;
}
set
{
y
=
value
;
this
.
RaisePropertyChanged
(
nameof
(
Y
));
this
.
OnTextChanged
();
}
}
#
endregion
#
region
Z
--
Z
值
private
double
z
;
/// <summary>
/// Z值
/// </summary>
public
double
Z
{
get
{
return
z
;
}
set
{
z
=
value
;
this
.
RaisePropertyChanged
(
nameof
(
Z
));
this
.
OnTextChanged
();
}
}
#
endregion
// ============================================================
// Command
// ============================================================
#
region
EditModeChangedCommand
--
编辑模式改变命令
/// <summary>
/// 编辑模式改变命令
/// </summary>
public
VCommand
<
TripletEditPanelMode
>
EditModeChangedCommand
{
get
;
set
;
}
/// <summary>
/// 编辑模式改变
/// </summary>
/// <param name="editMode">编辑模式</param>
private
void
EditModeChanged
(
TripletEditPanelMode
editMode
)
{
this
.
EditMode
=
editMode
;
}
#
endregion
// ============================================================
// Public Function
// ============================================================
/// <summary>
/// 更新
/// </summary>
/// <param name="controlObject">控制对象</param>
/// <param name="controlField">控制字段</param>
public
override
void
Update
(
ControlObjectModel
controlObject
,
ControlFieldNodeModel
controlField
)
{
base
.
Update
(
controlObject
,
controlField
);
this
.
IsSendToPreview
=
false
;
this
.
Text
=
controlField
?.
Value
;
this
.
IsSendToPreview
=
true
;
}
/// <summary>
/// 更新动态数据
/// </summary>
/// <param name="listCellEdit">列单元格编辑器</param>
/// <param name="columnDefinition">列定义</param>
/// <param name="rowHandle">行号</param>
/// <param name="row">行数据</param>
public
override
void
UpdateDynamic
(
ListCellEditBase
listCellEdit
,
GridColumnDefinition
columnDefinition
,
int
rowHandle
,
ExpandoObject
row
)
{
base
.
UpdateDynamic
(
listCellEdit
,
columnDefinition
,
rowHandle
,
row
);
IDictionary
<
string
,
object
>
dic
=
row
as
IDictionary
<
string
,
object
>;
this
.
IsSendToPreview
=
false
;
this
.
Text
=
dic
?[
columnDefinition
.
FieldName
]?.
ToString
();
this
.
IsSendToPreview
=
true
;
}
// ============================================================
// Private Function
// ============================================================
/// <summary>
/// 文本值改变时触发
/// </summary>
private
void
OnTextChanged
()
{
// 不需要向预览发送值
if
(!
this
.
IsSendToPreview
)
return
;
// 没有预览连接
if
(
ApplicationDomainEx
.
PreviewConn
==
null
)
return
;
// 没有控制对象或控制字段
if
(
this
.
ControlObject
==
null
||
this
.
ControlField
==
null
)
return
;
// 正常模式编辑
if
(
this
.
FieldEditMode
==
FieldEditMode
.
Normal
)
{
this
.
ControlField
.
Value
=
this
.
Text
;
this
.
VizCommandControlObjectService
.
SetControlObjectValue
(
ApplicationDomainEx
.
PreviewConn
,
this
.
ControlObject
.
TreeNodePath
,
this
.
ControlField
.
FieldIdentifier
,
this
.
ControlField
.
Value
);
return
;
}
// 没有列信息或行数据
if
(
this
.
ColumnDefinition
==
null
||
this
.
Row
==
null
)
return
;
// 动态模式编辑
if
(
this
.
FieldEditMode
==
FieldEditMode
.
Dynamic
)
{
IDictionary
<
string
,
object
>
dic
=
this
.
Row
as
IDictionary
<
string
,
object
>;
dic
[
this
.
ColumnDefinition
.
FieldName
]
=
this
.
Text
;
this
.
ListCellEdit
.
UpdateEditValue
(
this
.
ColumnDefinition
,
this
.
RowHandle
,
this
.
Row
);
return
;
}
}
}
}
VIZ.Package.Module/VIZ.Package.Module.csproj
View file @
2b34d5ba
...
@@ -107,6 +107,11 @@
...
@@ -107,6 +107,11 @@
<Compile Include="ControlObject\FieldEdit\Edit\ResourceEdit\GHResourceEditPartModel.cs" />
<Compile Include="ControlObject\FieldEdit\Edit\ResourceEdit\GHResourceEditPartModel.cs" />
<Compile Include="ControlObject\FieldEdit\Edit\ResourceEdit\ResourceEditPanelModelBase.cs" />
<Compile Include="ControlObject\FieldEdit\Edit\ResourceEdit\ResourceEditPanelModelBase.cs" />
<Compile Include="ControlObject\FieldEdit\Edit\TextEdit\TextEditPanelModel.cs" />
<Compile Include="ControlObject\FieldEdit\Edit\TextEdit\TextEditPanelModel.cs" />
<Compile Include="ControlObject\FieldEdit\Edit\TripletEdit\TripletEditPanelMode.cs" />
<Compile Include="ControlObject\FieldEdit\Edit\TripletEdit\TripletEditPanelModel.cs" />
<Compile Include="ControlObject\FieldEdit\Edit\TripletEdit\TripletEditPanel.xaml.cs">
<DependentUpon>TripletEditPanel.xaml</DependentUpon>
</Compile>
<Compile Include="ControlObject\FieldEdit\FieldEditPluginLifeCycle.cs" />
<Compile Include="ControlObject\FieldEdit\FieldEditPluginLifeCycle.cs" />
<Compile Include="ControlObject\FieldEdit\ViewModel\FieldEditViewModel.cs" />
<Compile Include="ControlObject\FieldEdit\ViewModel\FieldEditViewModel.cs" />
<Compile Include="ControlObject\FieldEdit\ViewModel\FieldEditWindowModel.cs" />
<Compile Include="ControlObject\FieldEdit\ViewModel\FieldEditWindowModel.cs" />
...
@@ -251,6 +256,10 @@
...
@@ -251,6 +256,10 @@
<Generator>MSBuild:Compile</Generator>
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
<SubType>Designer</SubType>
</Page>
</Page>
<Page Include="ControlObject\FieldEdit\Edit\TripletEdit\TripletEditPanel.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="Control\View\ControlView.xaml">
<Page Include="Control\View\ControlView.xaml">
<SubType>Designer</SubType>
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
<Generator>MSBuild:Compile</Generator>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment