Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lwm1986
roslyn
提交
d66839db
R
roslyn
项目概览
lwm1986
/
roslyn
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
roslyn
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
d66839db
编写于
5月 06, 2017
作者:
J
Julien Couvreur
提交者:
GitHub
5月 06, 2017
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Pass LangVersion thru ICompilerOptionsHostObject.SetCompilerOptions when above 15 (VB) (#19112)
上级
86c7d6cb
变更
8
隐藏空白更改
内联
并排
Showing
8 changed file
with
178 addition
and
15 deletion
+178
-15
src/Compilers/Core/MSBuildTask/Csc.cs
src/Compilers/Core/MSBuildTask/Csc.cs
+0
-6
src/Compilers/Core/MSBuildTask/ManagedCompiler.cs
src/Compilers/Core/MSBuildTask/ManagedCompiler.cs
+7
-0
src/Compilers/Core/MSBuildTask/Vbc.cs
src/Compilers/Core/MSBuildTask/Vbc.cs
+30
-7
src/VisualStudio/Core/Test/ProjectSystemShim/VisualBasicCompilerOptionsTests.vb
...Test/ProjectSystemShim/VisualBasicCompilerOptionsTests.vb
+106
-0
src/VisualStudio/VisualBasic/Impl/ProjectSystemShim/VisualBasicProject.vb
.../VisualBasic/Impl/ProjectSystemShim/VisualBasicProject.vb
+12
-1
src/Workspaces/Core/Desktop/Workspace/MSBuild/VisualBasic/VisualBasicProjectFileLoader.cs
...space/MSBuild/VisualBasic/VisualBasicProjectFileLoader.cs
+1
-1
src/Workspaces/CoreTest/WorkspaceTests/MSBuildWorkspaceTests.cs
...rkspaces/CoreTest/WorkspaceTests/MSBuildWorkspaceTests.cs
+21
-0
src/Workspaces/CoreTestUtilities/TestFiles/VisualBasicProject_VisualBasicProject.vbproj
...es/TestFiles/VisualBasicProject_VisualBasicProject.vbproj
+1
-0
未找到文件。
src/Compilers/Core/MSBuildTask/Csc.cs
浏览文件 @
d66839db
...
...
@@ -82,12 +82,6 @@ public bool GenerateFullPaths
get
{
return
_store
.
GetOrDefault
(
nameof
(
GenerateFullPaths
),
false
);
}
}
public
string
LangVersion
{
set
{
_store
[
nameof
(
LangVersion
)]
=
value
;
}
get
{
return
(
string
)
_store
[
nameof
(
LangVersion
)];
}
}
public
string
ModuleAssemblyName
{
set
{
_store
[
nameof
(
ModuleAssemblyName
)]
=
value
;
}
...
...
src/Compilers/Core/MSBuildTask/ManagedCompiler.cs
浏览文件 @
d66839db
...
...
@@ -382,6 +382,12 @@ protected override Encoding StandardOutputEncoding
}
}
public
string
LangVersion
{
set
{
_store
[
nameof
(
LangVersion
)]
=
value
;
}
get
{
return
(
string
)
_store
[
nameof
(
LangVersion
)];
}
}
#
endregion
/// <summary>
...
...
@@ -733,6 +739,7 @@ internal void AddResponseFileCommandsForSwitchesSinceInitialReleaseThatAreNeeded
commandLine
.
AppendSwitchIfNotNull
(
"/checksumalgorithm:"
,
ChecksumAlgorithm
);
commandLine
.
AppendSwitchWithSplitting
(
"/instrument:"
,
Instrument
,
","
,
';'
,
','
);
commandLine
.
AppendSwitchIfNotNull
(
"/sourcelink:"
,
SourceLink
);
commandLine
.
AppendSwitchIfNotNull
(
"/langversion:"
,
LangVersion
);
AddFeatures
(
commandLine
,
Features
);
AddEmbeddedFilesToCommandLine
(
commandLine
);
...
...
src/Compilers/Core/MSBuildTask/Vbc.cs
浏览文件 @
d66839db
...
...
@@ -79,12 +79,6 @@ public ITaskItem[] Imports
get
{
return
(
ITaskItem
[])
_store
[
nameof
(
Imports
)];
}
}
public
string
LangVersion
{
set
{
_store
[
nameof
(
LangVersion
)]
=
value
;
}
get
{
return
(
string
)
_store
[
nameof
(
LangVersion
)];
}
}
public
string
ModuleAssemblyName
{
set
{
_store
[
nameof
(
ModuleAssemblyName
)]
=
value
;
}
...
...
@@ -909,7 +903,7 @@ private bool InitializeHostCompiler(IVbcHostObject vbcHostObject)
}
// Check for support of the LangVersion property
if
(
vbcHostObject
is
IVbcHostObject3
)
if
(
vbcHostObject
is
IVbcHostObject3
&&
!
DeferToICompilerOptionsHostObject
(
LangVersion
,
vbcHostObject
)
)
{
IVbcHostObject3
vbcHostObject3
=
(
IVbcHostObject3
)
vbcHostObject
;
CheckHostObjectSupport
(
param
=
nameof
(
LangVersion
),
vbcHostObject3
.
SetLanguageVersion
(
LangVersion
));
...
...
@@ -960,6 +954,35 @@ private bool InitializeHostCompiler(IVbcHostObject vbcHostObject)
return
true
;
}
// VbcHostObject doesn't support VB versions beyond 15,
// so the LangVersion will be passed through ICompilerOptionsHostObject.SetCompilerOptions instead
private
static
bool
DeferToICompilerOptionsHostObject
(
string
langVersion
,
IVbcHostObject
vbcHostObject
)
{
if
(!(
vbcHostObject
is
ICompilerOptionsHostObject
))
{
return
false
;
}
if
(
langVersion
==
null
)
{
// CVbcMSBuildHostObject::SetLanguageVersion can handle null
return
false
;
}
// CVbcMSBuildHostObject::SetLanguageVersion can handle versions up to 15
var
supportedList
=
new
[]
{
"9"
,
"9.0"
,
"10"
,
"10.0"
,
"11"
,
"11.0"
,
"12"
,
"12.0"
,
"14"
,
"14.0"
,
"15"
,
"15.0"
};
return
Array
.
IndexOf
(
supportedList
,
langVersion
)
<
0
;
}
/// <summary>
/// This method will get called during Execute() if a host object has been passed into the Vbc
/// task. Returns one of the following values to indicate what the next action should be:
...
...
src/VisualStudio/Core/Test/ProjectSystemShim/VisualBasicCompilerOptionsTests.vb
浏览文件 @
d66839db
...
...
@@ -47,6 +47,112 @@ Namespace Microsoft.VisualStudio.LanguageServices.UnitTests.ProjectSystemShim
End
Using
End
Sub
<
WpfFact
()
>
<
Trait
(
Traits
.
Feature
,
Traits
.
Features
.
ProjectSystemShims
)
>
Public
Sub
SetCompilerOptions_LangVersion14
()
Using
environment
=
New
TestEnvironment
()
Dim
project
=
CreateVisualBasicProject
(
environment
,
"Test"
)
Dim
compilerOptionsHost
=
DirectCast
(
project
,
Implementation
.
ProjectSystem
.
Interop
.
ICompilerOptionsHostObject
)
Dim
supported
As
Boolean
compilerOptionsHost
.
SetCompilerOptions
(
"/langversion:14"
,
supported
)
Assert
.
True
(
supported
)
Dim
workspaceProject
=
environment
.
Workspace
.
CurrentSolution
.
Projects
.
Single
()
Dim
options
=
DirectCast
(
workspaceProject
.
ParseOptions
,
VisualBasicParseOptions
)
' SetCompilerOptions only handles versions 15.3 and up
Assert
.
Equal
(
LanguageVersion
.
VisualBasic15
,
options
.
LanguageVersion
)
Assert
.
Equal
(
LanguageVersion
.
VisualBasic15
,
options
.
SpecifiedLanguageVersion
)
project
.
Disconnect
()
End
Using
End
Sub
<
WpfFact
()
>
<
Trait
(
Traits
.
Feature
,
Traits
.
Features
.
ProjectSystemShims
)
>
Public
Sub
SetCompilerOptions_LangVersion15
()
Using
environment
=
New
TestEnvironment
()
Dim
project
=
CreateVisualBasicProject
(
environment
,
"Test"
)
Dim
compilerOptionsHost
=
DirectCast
(
project
,
Implementation
.
ProjectSystem
.
Interop
.
ICompilerOptionsHostObject
)
Dim
supported
As
Boolean
compilerOptionsHost
.
SetCompilerOptions
(
"/langversion:15"
,
supported
)
Assert
.
True
(
supported
)
Dim
workspaceProject
=
environment
.
Workspace
.
CurrentSolution
.
Projects
.
Single
()
Dim
options
=
DirectCast
(
workspaceProject
.
ParseOptions
,
VisualBasicParseOptions
)
Assert
.
Equal
(
LanguageVersion
.
VisualBasic15
,
options
.
LanguageVersion
)
Assert
.
Equal
(
LanguageVersion
.
VisualBasic15
,
options
.
SpecifiedLanguageVersion
)
project
.
Disconnect
()
End
Using
End
Sub
<
WpfFact
()
>
<
Trait
(
Traits
.
Feature
,
Traits
.
Features
.
ProjectSystemShims
)
>
Public
Sub
SetCompilerOptions_LangVersionDefault
()
Using
environment
=
New
TestEnvironment
()
Dim
project
=
CreateVisualBasicProject
(
environment
,
"Test"
)
Dim
compilerOptionsHost
=
DirectCast
(
project
,
Implementation
.
ProjectSystem
.
Interop
.
ICompilerOptionsHostObject
)
Dim
supported
As
Boolean
compilerOptionsHost
.
SetCompilerOptions
(
"/langversion:Default"
,
supported
)
Assert
.
True
(
supported
)
Dim
workspaceProject
=
environment
.
Workspace
.
CurrentSolution
.
Projects
.
Single
()
Dim
options
=
DirectCast
(
workspaceProject
.
ParseOptions
,
VisualBasicParseOptions
)
Assert
.
Equal
(
LanguageVersion
.
Default
.
MapSpecifiedToEffectiveVersion
(),
options
.
LanguageVersion
)
Assert
.
Equal
(
LanguageVersion
.
Default
.
MapSpecifiedToEffectiveVersion
(),
options
.
SpecifiedLanguageVersion
)
project
.
Disconnect
()
End
Using
End
Sub
<
WpfFact
()
>
<
Trait
(
Traits
.
Feature
,
Traits
.
Features
.
ProjectSystemShims
)
>
Public
Sub
SetCompilerOptions_LangVersion15_3
()
Using
environment
=
New
TestEnvironment
()
Dim
project
=
CreateVisualBasicProject
(
environment
,
"Test"
)
Dim
compilerOptionsHost
=
DirectCast
(
project
,
Implementation
.
ProjectSystem
.
Interop
.
ICompilerOptionsHostObject
)
Dim
supported
As
Boolean
compilerOptionsHost
.
SetCompilerOptions
(
"/langversion:15.3"
,
supported
)
Assert
.
True
(
supported
)
Dim
workspaceProject
=
environment
.
Workspace
.
CurrentSolution
.
Projects
.
Single
()
Dim
options
=
DirectCast
(
workspaceProject
.
ParseOptions
,
VisualBasicParseOptions
)
Assert
.
Equal
(
LanguageVersion
.
VisualBasic15_3
,
options
.
LanguageVersion
)
Assert
.
Equal
(
LanguageVersion
.
VisualBasic15_3
,
options
.
SpecifiedLanguageVersion
)
project
.
Disconnect
()
End
Using
End
Sub
<
WpfFact
()
>
<
Trait
(
Traits
.
Feature
,
Traits
.
Features
.
ProjectSystemShims
)
>
Public
Sub
SetCompilerOptions_LangVersionLatest
()
Using
environment
=
New
TestEnvironment
()
Dim
project
=
CreateVisualBasicProject
(
environment
,
"Test"
)
Dim
compilerOptionsHost
=
DirectCast
(
project
,
Implementation
.
ProjectSystem
.
Interop
.
ICompilerOptionsHostObject
)
Dim
supported
As
Boolean
compilerOptionsHost
.
SetCompilerOptions
(
"/langversion:latest"
,
supported
)
Assert
.
True
(
supported
)
Dim
workspaceProject
=
environment
.
Workspace
.
CurrentSolution
.
Projects
.
Single
()
Dim
options
=
DirectCast
(
workspaceProject
.
ParseOptions
,
VisualBasicParseOptions
)
Assert
.
Equal
(
LanguageVersion
.
Latest
.
MapSpecifiedToEffectiveVersion
(),
options
.
LanguageVersion
)
Assert
.
Equal
(
LanguageVersion
.
Latest
.
MapSpecifiedToEffectiveVersion
(),
options
.
SpecifiedLanguageVersion
)
project
.
Disconnect
()
End
Using
End
Sub
<
WpfFact
()
>
<
Trait
(
Traits
.
Feature
,
Traits
.
Features
.
ProjectSystemShims
)
>
<
WorkItem
(
530980
,
"http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/530980"
)
>
...
...
src/VisualStudio/VisualBasic/Impl/ProjectSystemShim/VisualBasicProject.vb
浏览文件 @
d66839db
...
...
@@ -392,7 +392,18 @@ Namespace Microsoft.VisualStudio.LanguageServices.VisualBasic.ProjectSystemShim
Protected
Overrides
Function
CreateParseOptions
(
commandLineArguments
As
CommandLineArguments
)
As
ParseOptions
Dim
baseParseOptions
=
DirectCast
(
MyBase
.
CreateParseOptions
(
commandLineArguments
),
VisualBasicParseOptions
)
Return
VisualBasicProjectOptionsHelper
.
CreateParseOptions
(
baseParseOptions
,
_rawOptions
)
Dim
resultParseOptions
=
VisualBasicProjectOptionsHelper
.
CreateParseOptions
(
baseParseOptions
,
_rawOptions
)
Dim
commandLineOptions
=
DirectCast
(
commandLineArguments
.
ParseOptions
,
VisualBasicParseOptions
)
If
commandLineOptions
.
LanguageVersion
>
LanguageVersion
.
VisualBasic15
Then
' For language versions after VB 15, we expect the version to be passed from MSBuild to the IDE
' via command-line arguments (`ICompilerOptionsHostObject.SetCompilerOptions`)
' instead of using `IVbcHostObject3.SetLanguageVersion`
resultParseOptions
=
resultParseOptions
.
WithLanguageVersion
(
commandLineOptions
.
LanguageVersion
)
End
If
Return
resultParseOptions
End
Function
Private
Shadows
Sub
UpdateOptions
()
...
...
src/Workspaces/Core/Desktop/Workspace/MSBuild/VisualBasic/VisualBasicProjectFileLoader.cs
浏览文件 @
d66839db
...
...
@@ -880,7 +880,7 @@ public bool SetLanguageVersion(string languageVersion)
{
if
(!
string
.
IsNullOrWhiteSpace
(
languageVersion
))
{
_commandLineArgs
.
Add
(
"/lang
uage
version:"
+
languageVersion
);
_commandLineArgs
.
Add
(
"/langversion:"
+
languageVersion
);
}
return
true
;
...
...
src/Workspaces/CoreTest/WorkspaceTests/MSBuildWorkspaceTests.cs
浏览文件 @
d66839db
...
...
@@ -580,6 +580,27 @@ public void TestOpenProject_VisualBasic_WithoutOutputPath()
Assert
.
NotEmpty
(
project
.
OutputFilePath
);
}
[
Fact
,
Trait
(
Traits
.
Feature
,
Traits
.
Features
.
Workspace
)]
public
void
TestOpenProject_VisualBasic_WithLanguageVersion15_3
()
{
CreateFiles
(
GetMultiProjectSolutionFiles
()
.
ReplaceFileElement
(
@"VisualBasicProject\VisualBasicProject.vbproj"
,
"LangVersion"
,
"15.3"
));
var
project
=
MSBuildWorkspace
.
Create
().
OpenProjectAsync
(
GetSolutionFileName
(
@"VisualBasicProject\VisualBasicProject.vbproj"
)).
Result
;
Assert
.
Equal
(
VB
.
LanguageVersion
.
VisualBasic15_3
,
((
VB
.
VisualBasicParseOptions
)
project
.
ParseOptions
).
LanguageVersion
);
}
[
Fact
,
Trait
(
Traits
.
Feature
,
Traits
.
Features
.
Workspace
)]
public
void
TestOpenProject_VisualBasic_WithLatestLanguageVersion
()
{
CreateFiles
(
GetMultiProjectSolutionFiles
()
.
ReplaceFileElement
(
@"VisualBasicProject\VisualBasicProject.vbproj"
,
"LangVersion"
,
"Latest"
));
var
project
=
MSBuildWorkspace
.
Create
().
OpenProjectAsync
(
GetSolutionFileName
(
@"VisualBasicProject\VisualBasicProject.vbproj"
)).
Result
;
Assert
.
Equal
(
VB
.
LanguageVersion
.
VisualBasic15_3
,
((
VB
.
VisualBasicParseOptions
)
project
.
ParseOptions
).
LanguageVersion
);
Assert
.
Equal
(
VB
.
LanguageVersion
.
Latest
,
((
VB
.
VisualBasicParseOptions
)
project
.
ParseOptions
).
SpecifiedLanguageVersion
);
}
[
Fact
,
Trait
(
Traits
.
Feature
,
Traits
.
Features
.
Workspace
)]
public
void
TestOpenProject_VisualBasic_WithoutAssemblyName
()
{
...
...
src/Workspaces/CoreTestUtilities/TestFiles/VisualBasicProject_VisualBasicProject.vbproj
浏览文件 @
d66839db
...
...
@@ -38,6 +38,7 @@
</PropertyGroup>
<PropertyGroup>
<OptionExplicit>
On
</OptionExplicit>
<LangVersion>
15
</LangVersion>
</PropertyGroup>
<PropertyGroup>
<OptionCompare>
Binary
</OptionCompare>
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录