Oli*_*ier 14 .net c# .net-core asp.net-core
TLDR:一切都在标题中.
假设您project.json使用两个具有两个类型的包(名称相同,命名空间相同).
如何使用其中一种类型?
通过对.Net进行分类,这很容易.只需使用extern别名.
但是你如何使用.net核心呢?我没有看到任何选项,package.json这将让我定义一个别名,就像我在程序集引用属性窗口中所做的那样.
我设法找到这个问题的唯一提到就是这里
[编辑] 这里似乎有一个未解决的问题
我在 .Net Core 2.2 中遇到问题,其中MySqlConnector类型名称和命名空间发生冲突,答案是创建别名。我认为这也应该适合您的需求,只需MySqlConnector相应更改以下内容即可:/sf/answers/3408077641/
<Target Name="ChangeAliasesOfStrongNameAssemblies" BeforeTargets="FindReferenceAssembliesForReferences;ResolveReferences">
<ItemGroup>
<ReferencePath Condition="'%(FileName)' == 'MySqlConnector'">
<Aliases>MySqlConnectorAlias</Aliases>
</ReferencePath>
</ItemGroup>
</Target>
Run Code Online (Sandbox Code Playgroud)
然后在你的cs文件中使用之前:
extern alias MySqlConnectorAlias;
Run Code Online (Sandbox Code Playgroud)
然后像这样引用你的类型:
MySqlConnectorAlias::MySql.Data.MySqlClient.MySqlConnection
Run Code Online (Sandbox Code Playgroud)
我相信您要链接到的问题在这里:https :
//github.com/NuGet/Home/issues/4989
您可以通过使用MSBuild目标来解决。将此代码段放入Directory.Build.targets:
<Target Name="AddPackageAliases" BeforeTargets="ResolveReferences" Outputs="%(PackageReference.Identity)">
<PropertyGroup>
<AliasPackageReference>@(PackageReference->'%(Identity)')</AliasPackageReference>
<AliasName>@(PackageReference->'%(Alias)')</AliasName>
</PropertyGroup>
<ItemGroup>
<ReferencePath Condition="'%(FileName)'=='$(AliasPackageReference)'">
<Aliases>$(AliasName)</Aliases>
</ReferencePath>
</ItemGroup>
</Target>
Run Code Online (Sandbox Code Playgroud)
然后在PackageReference节点的csproj中使用它,如下所示:
<ItemGroup>
<PackageReference Include="StackExchange.Redis.StrongName" Version="1.2.6" Alias="signed" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
将此添加为对GitHub问题的评论:https :
//github.com/NuGet/Home/issues/4989#issuecomment-426666530
不再需要所有这些解决方法。您现在可以alias在 v16.7+ 的 dotnet 中使用。详细信息请参见此处。
因此,不再需要这里的任何解决方法。只需将别名添加到您的项目文件中(智能感知似乎不认为它存在,但它有效):
<ProjectReference Include="Example.csproj" Aliases="ExampleAlias" />
Run Code Online (Sandbox Code Playgroud)
extern alias ExampleAlias;然后像使用 .Net 框架一样使用代码:
extern alias ExampleAlias;
using ExampleAlias::Namespace;
Run Code Online (Sandbox Code Playgroud)
一切正常。此处的文档
| 归档时间: |
|
| 查看次数: |
2978 次 |
| 最近记录: |