привет,

 

возникла след проблема - загрузил в отдельный пакет-проект reference assembly, пересобрал ассембли локально и хочу снова загрузить. для этого я удаляю старую дллку с помощью Configuration страницы, загружаю новую, нажимаю Compile All кнопку. после этого все равно остается старая дллка и я не могу проверить новые фиксы/ функционал и тд. в чем может быть проблема? 

 

использую локальную разработку, .net core 3.1 приложение в докере, file mode - false.

Нравится

2 комментария

Добрый день.

Для того чтобы приложение подтягивало сборку из Пакета-Проекта, нужно:

1. Название dll сборки Пакета-Проекта,  должно совпадать с названием пакета.

2. dll сборка Пакета-Проекта должна находится в соответсвующей директории: 
  - TS.Conf/PackageName/Files/Bin/ (для Framework) 
  - TS.Conf/PackageName/Files/Bin/netstandard (для .NetCore)

3. Для .NetCore флаг Feature-UseSeparateDirectoryToLoadPackageAssemblies (в Terrasoft.WebHost.dll.config) должен быть включен:
<add key="Feature-UseSeparateDirectoryToLoadPackageAssemblies" value="true" />

4. Cборка должна быть помечена аттрибутом:
[assembly: PackageReferenceAssembly(RefAssemblyMarker.All)]
и добавить: using Terrasoft.Core.Attributes;
Это делается в AssemblyInfo.cs (папка Properties - Properties\AssemblyInfo.cs )
Если используется, новая версия проекта *.csproj, то в нем AssemblyInfo.cs генерируется автоматически на основании проекта.

Для того чтобы не было конфликтов автогенерируемой AssemblyInfo.cs с созданной вручную, нужно в проекте *.csproj, отключить автогенерацию AssemblyInfo.cs.
Для этого в проект *.csproj, надо добавить запись:
<PropertyGroup>
           .........................................
           <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
           .......................................
</PropertyGroup>

Cherednichenko Nikita,

спасибо за ответ. получилось решить проблему для вызова кода из бизнес процессов.

но все равно осталась проблема вызова рест ендпоинта. не получается сделать вызов если код находится в библиотеке (reference assembly), а не в исходнике кода (source code).

вот такой сервис работает не работает в библиотеке, где содержаться другие классы для бизнесс процессов 

 

using System.ServiceModel;
using System.ServiceModel.Web;
using System.ServiceModel.Activation;
using Terrasoft.Web.Common;
 
[ServiceContract]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
public class GreetingService : BaseService
{
    [OperationContract]
    [WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json)]
    public string Test()
    {
 
        return "test output";
    }
}

в чем может быть проблема? или рест сервисы в reference assembly не поддерживаются/надо что-то еще добавить?

Показать все комментарии