Как подготовить плагин Nop-Commerce 4.20 к распространению

Я работаю с новым плагином Nopcommerce 4.20. Плагин почти готов, но мне нужно подготовить его к распространению. Но внутри Nop.Web/Plugins/ создаются ненужные папки.

Я сделал Nop.Web и Nop.Web.Framework в "copy local=false", которые находятся в разделе «Проекты», удалил плагин и снова собрал его. Но все равно получаю ненужные папки с двумя символами.

<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp2.2</TargetFramework>
<Copyright>SOME_COPYRIGHT</Copyright>
<Company>YOUR_COMPANY</Company>
<Authors>SOME_AUTHORS</Authors>
<PackageLicenseUrl>PACKAGE_LICENSE_URL</PackageLicenseUrl>
<PackageProjectUrl>PACKAGE_PROJECT_URL</PackageProjectUrl>
<RepositoryUrl>REPOSITORY_URL</RepositoryUrl>
<RepositoryType>Git</RepositoryType>

 <OutputPath>..\..\Presentation\Nop.Web\Plugins\Discount.ProductMix
</OutputPath>
<OutDir>$(OutputPath)</OutDir>
    <!--Set this parameter to true to get the dlls copied from the NuGet 
cache to the output of your project. You need to set this parameter to 
true if your plugin has a nuget package to ensure that the dlls copied 
from the NuGet cache to the output of your project-->
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
</PropertyGroup>
<ItemGroup>
  <None Remove="logo.jpeg" />
  <None Remove="plugin.json" />
  <None Remove="Views\Configure.cshtml" />
  <None Remove="Views\DiscountProductAddPopup.cshtml" />
  <None Remove="Views\_ViewImports.cshtml" />
</ItemGroup>
<ItemGroup>
  <Content Include="logo.jpeg">
    <CopyToOutputDirectory>Always</CopyToOutputDirectory>
  </Content>
  <Content Include="plugin.json">
    <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
  </Content>
  <Content Include="Views\DiscountProductAddPopup.cshtml">
    <CopyToOutputDirectory>Always</CopyToOutputDirectory>
  </Content>
  <Content Include="Views\Configure.cshtml">
    <CopyToOutputDirectory>Always</CopyToOutputDirectory>
  </Content>
  <Content Include="Views\_ViewImports.cshtml">
    <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
  </Content>
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\..\Presentation\Nop.Web.Framework\Nop.Web.Framework.csproj">
  <Private>false</Private>
</ProjectReference>
<ProjectReference Include="..\..\Presentation\Nop.Web\Nop.Web.csproj">
  <Private>false</Private>
</ProjectReference>
</ItemGroup>

<ItemGroup>
  <Compile Update="Controllers\DiscountProductMixController.cs">
    <CopyToOutputDirectory>Never</CopyToOutputDirectory>
  </Compile>
  <Compile Update="Data\DiscountOfferMixMap.cs">
    <CopyToOutputDirectory>Never</CopyToOutputDirectory>
  </Compile>
  <Compile Update="Data\DiscountProductMixObjectContext.cs">
    <CopyToOutputDirectory>Never</CopyToOutputDirectory>
  </Compile>
  <Compile Update="DiscountProductMixConfiguration.cs">
    <CopyToOutputDirectory>Never</CopyToOutputDirectory>
  </Compile>
  <Compile Update="Domain\DiscountOffers.cs">
    <CopyToOutputDirectory>Never</CopyToOutputDirectory>
  </Compile>
  <Compile Update="Infrastructure\DependencyRegistrar.cs">
    <CopyToOutputDirectory>Never</CopyToOutputDirectory>
  </Compile>
  <Compile Update="Infrastructure\PluginDBStartup.cs">
    <CopyToOutputDirectory>Never</CopyToOutputDirectory>
  </Compile>
  <Compile Update="Models\ConfigurationModel.cs">
    <CopyToOutputDirectory>Never</CopyToOutputDirectory>
  </Compile>
</ItemGroup>
<!-- This target execute after "Build" target -->
<Target Name="NopTarget" AfterTargets="Build">
<!-- Delete unnecessary libraries from plugins path -->
<MSBuild Projects="@(ClearPluginAssemblies)" Properties="PluginPath=$(MSBuildProjectDirectory)\$(OutDir)" Targets="NopClear" />
</Target>


person user6672226    schedule 08.09.2019    source источник


Ответы (2)


Все в порядке, если вы не устанавливаете какие-либо пакеты Nuget, сделайте false

<CopyLocalLockFileAssemblies>False</CopyLocalLockFileAssemblies>

и еще добавь замени эти строчки

<ItemGroup>
<ProjectReference 
 Include="..\..\Presentation\Nop.Web.Framework\Nop.Web.Framework.csproj"/>
<ProjectReference Include="..\..\Presentation\Nop.Web\Nop.Web.csproj" />
<ClearPluginAssemblies Include="$(MSBuildProjectDirectory)\..\..\Build\ClearPluginAssemblies.proj" />

Try these changes can help you.

person ILYAS PATEL    schedule 09.09.2019

У меня также была проблема с созданием ненужных папок. Оказалось, что это вызвано пакетом SDK для .Net Core 3.0, который, по-видимому, создает плагины не так, как SDK версии 2.x. Чтобы проверить это, вы можете запустить dotnet --version из командной строки из папки вашего проекта nopcommerce. Версия не должна быть выше 2.х.

Исправление состояло в том, чтобы просто указать dotnet использовать определенную версию SDK для сборки проекта. Это было просто вопросом добавления файла global.json в папку моего проекта nopcommerce, содержащего следующие строки:

{
  "sdk": {
    "version": "2.2.402"
  }
}

Повторный запуск dotnet --version теперь дает результат 2.2.402.

person MacHeath    schedule 20.11.2019