Dựa tắt của comment James Đóng, tôi đã có thể viết vào bảng dưới đây để gỡ lỗi đường dẫn tập tin của tôi:
<#@ template language="C#" debug="true" hostspecific="true"#>
<#@ include file="EF.Utility.CS.ttinclude"#><#@
output extension=".txt"#><#
/////////Some standard-ish settings, continue reading on
CodeGenerationTools code = new CodeGenerationTools(this);
MetadataLoader loader = new MetadataLoader(this);
CodeRegion region = new CodeRegion(this, 1);
MetadataTools ef = new MetadataTools(this);
/////////Below are the relevant sections I used for debugging
string solutionsPath = Host.ResolveAssemblyReference("$(SolutionDir)");//Gives you the location of MySolution.sln
string edmxFile = solutionsPath + "MyDAL/MyDAL/MyModel.edmx"; //Note - VS projects usually have a subdir with the same name as the sln, hence the repetition for MyDAL
#>
Does this file exist?
<#
//
if (File.Exists(edmxFile))
{
//Continue.
#>
Yes
<#
}
else
{
#>
No
<#
}
#>
Điều này sẽ tạo ra một file .txt và sẽ rất nhanh chóng giúp bạn gỡ rối cho dù con đường của bạn có thể được đặt hay không. Là một lưu ý phụ, trong trường hợp có đường dẫn tương đối (ví dụ: ../App.config
) không thể định vị được, tôi thấy rằng nó giúp đặt một tệp (ví dụ: test1.txt
) ở mỗi cấp thư mục, như tôi đã tìm ra rằng Host.ResolvePath
không thể nhìn thấy bên ngoài hội đồng hiện tại với thiết lập của tôi. Thông báo trước này có thể gây nhầm lẫn rất nhanh vì ../../App.config
có thể giải quyết thành MySolution\App.config
, nhưng ../../MyDal/README.txt
sẽ không giải quyết (do đó không tìm thấy tệp), ngay cả khi đó là đường dẫn chính xác. Đoạn mã trên dường như phủ nhận vấn đề này theo như tôi thấy.
Các giải pháp trên cũng có thể là một giải pháp cho vấn đề này - How to use the poco entity generator
Nguồn
2013-01-13 13:50:00
Tham chiếu DLL theo đường dẫn gây ra sự cố tôi đang cố tránh. Một hộp dev có thể có dự án ở một nơi trong khi một hộp khác có nó ở một nơi khác. Nếu tôi có thể giả định vị trí, thì tôi sẽ không phải có mẫu xác định nó - tôi chỉ có thể mã hóa nó hoặc tiêm nó với các kịch bản xây dựng. Làm việc trên mô hình là không có vấn đề - kịch bản của tôi chạy hoàn hảo nếu tôi hardcode đường dẫn. Tôi chỉ cần một cách để tự động xác định con đường đó. Sử dụng Host.Resolve là tốt nếu tôi cần đường dẫn của mẫu - tôi chỉ cần tìm ra đường dẫn cho nguồn của assembly MyDAL. – Jaxidian
Host.ResolvePath (".") Hoạt động. :) – Jaxidian