Я пытаюсь написать задачу MSBuild для создания базы данных с использованием сопоставлений FluentNhibernate.
Код задачи сейчас выглядит так...
public class CreateDatabase : Task
{
[Required]
public string ConfigFile
{ get; set; }
[Required]
public string MappingAssemblyName
{ get; set; }
public override bool Execute()
{
var mappingAssembly = Assembly.Load(MappingAssemblyName);
var config = new Configuration();
config.Configure(ConfigFile);
var fluentConfig = Fluently.Configure(config)
.Mappings(m => m.FluentMappings.AddFromAssembly(mappingAssembly));
var sessionSource = new SessionSource(fluentConfig);
sessionSource.BuildSchema();
return true;
}
}
и использование MSBuild выглядит так...
<ItemGroup>
<Content Include="hibernate.cgf.xml" />
</ItemGroup>
<UsingTask AssemblyFile="..\lib\MyUtilities.MSBuild.dll" TaskName="CreateDatabase" />
<Target Name="Build" >
<CreateDatabase ConfigFile="@(Content)" MappingAssemblyName="MyMappingAssemlyName" />
</Target>
Но теперь я застрял
Неудивительно, что Assembly.Load завершается сбоем, потому что отсутствует сборка, содержащая мои сопоставления Fluent («MyMappingAssemly»).
Предполагая, что сопоставления Fluent определены в другом проекте в моем решении, как лучше всего сообщить моей задаче MSBuild о сборке сопоставления? Я думаю, что могу пойти по неправильному пути, используя свойство MappingAssemblyName.